Geolocation 什么';这是获取用户的最简单方法';从ip地址中选择经度和纬度

Geolocation 什么';这是获取用户的最简单方法';从ip地址中选择经度和纬度,geolocation,Geolocation,在我从事的大多数web项目中,我总是需要用户的位置。我用过,但它涉及到导入他们的数据集,需要不断更新。还有其他免费和付费的服务,但我只是想要一些简单的东西,我可以在几秒钟内添加到任何网站 这是一种诱饵,因为我有一个简单的解决方案,如下所述,但我想看看是否有其他人使用这种技术,是否有更好的解决方案,或者是否存在一些不可预见的陷阱。我目前使用的实现我在几个其他问题中看到过,但我没有将其视为选择的答案 我在我的博客中详细介绍了这一点,但简而言之: 基本上,您只需加载Google的API加载程序脚本:

在我从事的大多数web项目中,我总是需要用户的位置。我用过,但它涉及到导入他们的数据集,需要不断更新。还有其他免费和付费的服务,但我只是想要一些简单的东西,我可以在几秒钟内添加到任何网站


这是一种诱饵,因为我有一个简单的解决方案,如下所述,但我想看看是否有其他人使用这种技术,是否有更好的解决方案,或者是否存在一些不可预见的陷阱。

我目前使用的实现我在几个其他问题中看到过,但我没有将其视为选择的答案

我在我的博客中详细介绍了这一点,但简而言之:


基本上,您只需加载Google的API加载程序脚本:

<script type="text/javascript" src="http(s)://www.google.com/jsapi"></script>

然后,您可以访问提供详细位置信息的多个属性

您要查看的对象是google.loader.ClientLocation

  • ClientLocation.latitude
  • ClientLocation.longitude
  • ClientLocation.address.city
  • ClientLocation.address.country
  • ClientLocation.address.country_代码-ISO 3166-1国家代码
  • ClientLocation.address.region-美国的特定国家/地区此为州
*注意,其中一些可以为空

有关此API的更多信息,请查看

还有人用这个吗?有没有人用过这么简单更好的东西?这种方法有问题吗

我不知道这个解决方案的覆盖率/准确性,但我认为谷歌会不断更新它,可能相当不错。

我使用了免费的JSONP服务,我不确定它的准确性,但它使用起来非常简单:

// an example using jQuery
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) { 
  alert('Latitude: ' + data.latitude + 
        '\nLongitude: ' + data.longitude + 
        '\nCountry: ' + data.address.country); 
});

查看正在运行的代码段。

我使用MaxMind GeoIP City/ISP/组织(Web服务),50000次查询需要花费20美元,并且总是更新(请参阅)。我喜欢这样一个事实:我不需要担心数据库更新,因为它都是在那个服务器上完成的


我使用PHP发送客户端IP地址,作为回报,我得到纬度、经度以及其他有用的信息,如地区代码、城市、大都市代码、区号、国家、ISP和组织名称(如果已知)。

Wow,这…有点令人毛骨悚然。有没有办法在服务器端而不是客户端捕获这些数据?我还没有看到谷歌提供的任何关于准确性的数据,但我认为有很多因素会影响你获得的信息的质量。一般来说,ip-to-location数据的准确度很低(任何比city更细粒度的东西),有些不可靠,但通常这就是我所关心的。Matt,我想这取决于你想做什么。显然,如果你在客户端有这个,你可以把它发送到你的服务器上,但如果你真的想从服务器端的代码打电话,这可能会很棘手,因为谷歌只是使用http get请求的ip作为输入。准确度在很多时候甚至不在城市级别。乡村可能是你能得到的最好的地方。IP->Location在注册IP地址的位置工作。例如,我在家的IP注册到我的IP,地址在利兹。我在400英里外。AOL的IP地址来自AOL总部,但在美国各地都有使用(尽管在某些情况下,IP地址会被划分为州)。它永远不会非常准确。还有一个问题:我只选择了这一个而不是wipmania,因为我认为谷歌更稳定/可靠,我的prod应用程序依赖它。看起来这两种方法大体上是一样的。当你得到经度和纬度时,你会自动知道这个国家现在已经不推荐了