【问题标题】:Get users location and saving coordinates in database获取用户位置并在数据库中保存坐标
【发布时间】:2012-09-09 21:10:21
【问题描述】:

我在用户可以创建帖子的页面上有以下代码:

<script>

function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }
}

function showPosition(position)
{
    $('input#latitude').val(position.coords.latitude);
    $('input#longitude').val(position.coords.longitude);    
}

getLocation();

</script>

这会使用用户坐标填充表单上的两个隐藏字段。这些坐标保存在帖子的数据库表中,以便可以在地图上显示帖子,以便其他用户可以看到它的发布位置。

但是,如果用户决定: A)不分享他们的位置 B) 使用不支持地理位置的浏览器

我将无法保存此信息,它会破坏应用程序的意义!

他们是更好的方法吗?以及当用户决定不分享他们的位置或没有地理位置时的问题?

到目前为止,我有:http://dev.driz.co.uk/location/ 作为测试,我还有一个字段,该字段将以城镇/城市的形式填充用户位置。这样用户就可以看到他们当前发布的位置,如果错误,则允许他们更改并更新坐标(请注意,这只会获得中心位置,而不是我们将获得的实际位置只是在搜索他们进入的城镇)。

我希望使用 Google Maps API 来确定用户的位置。

澄清我想要构建的内容:

1.) 来自 users 表的用户位置将填充页面上显示的字段。然后,这将被他们使用 Geolocation 的当前位置覆盖。如果他们没有这个或阻止它,那么它将只使用预填充的文本。

2.) 使用此位置值或地理位置,我们将为用户获取坐标,然后将它们插入隐藏字段。

3.) 如果用户认为该位置有误或出于某种原因想要将其更改为其他位置,那么他们可以在框中键入它并单击更改按钮,然后该按钮将找到该位置的坐标. (如果找不到则显示错误,并使用用户位置的预填充默认值,直到找到新的)。

有人可以帮忙吗?谢谢

【问题讨论】:

    标签: javascript geolocation


    【解决方案1】:

    您只想在浏览器中执行此操作吗?如果没有并且用户决定不分享他的位置,您可以使用 GeoIP 库和geocoding service in Google Maps API 在后端估计坐标。

    【讨论】:

    • 我不需要使用 IP 获取位置,因为我将从用户表中获得他们的位置。所以我想用它来获取坐标,除非他们使用会改变它的地理位置。
    • 好的,感谢您更好地描述您的问题。我刚刚为您的要求实施了草案here。如果您需要不同的东西,请告诉我。请注意,formatted_address 可能对您来说太详细了。如果只需要城市或国家,您必须查看docs of google geocoder results
    • 酷 :) 我玩过代码:dev.driz.co.uk/location 并得到了更小的地址。我试图让它与一张小地图一起工作,这样我就不会违反地图 api 的条款。但我需要它来显示基于两个基地址的标记,例如纽约,或指定/地理定位的位置。你有机会帮忙解决这个问题吗?谢谢。
    • 标记设置的好地方是setCoords()函数。 Updated version is here.
    • 即使定位失败,地图还会显示标记吗?而是使用默认的纽约位置来设置隐藏字段中的坐标和地图上的标记?再次感谢。
    【解决方案2】:

    http://ipinfodb.com/ 在用户不接受或他们的浏览器不支持地理定位的情况下取得了一些成功。 他们为各种语言提供了大量示例代码,包括直接使用 javascript 访问 API,而且我发现他们的免费 API 的限制和准确性对于轻度到中度流量的网站来说是足够合理的。

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多