获取用户位置并在数据库中保存坐标

时间:2012-09-09 21:10:21

标签: javascript geolocation

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

<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/作为测试,我还有一个字段,将以城镇/城市的形式填充用户位置。这样,用户就可以看到他们当前发布的位置,如果错了,那么它将允许他们更改并更新坐标(请注意,这将只是获取中心位置,而不是我们将在那里的ACTUAL位置只是在寻找他们进入的城镇。

我希望使用Google Maps API来计算用户位置。

澄清我想要建立的内容:

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

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

3。)如果用户确定位置错误或者他们想要将其更改为其他任何地方,那么他们可以在框中键入它并单击更改按钮,然后找到该位置的坐标。 (如果找不到则显示错误并使用用户位置的预填充默认值,直到找到新的。)

任何人都可以帮忙吗?感谢

2 个答案:

答案 0 :(得分:1)

你想只在浏览器中这样做吗?如果没有并且用户决定不共享他的位置,您可以使用GeoIP库和geocoding service in Google Maps API来估计后端的坐标。

答案 1 :(得分:0)

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