从IP地址获取用户纬度和经度的最简单方法是啥[关闭]

Posted

技术标签:

【中文标题】从IP地址获取用户纬度和经度的最简单方法是啥[关闭]【英文标题】:What's the simplest way to get a user's latitude and longitude from an ip address [closed]从IP地址获取用户纬度和经度的最简单方法是什么[关闭] 【发布时间】:2009-10-16 06:26:29 【问题描述】:

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

所以这有点上当,因为我有一个简单的解决方案,详情如下,但我想看看是否有其他人使用这种技术,是否有更好的解决方案,或者是否有一些无法预料的陷阱。

【问题讨论】:

哇,这……有点毛骨悚然。 有没有办法在服务器端而不是客户端捕获这些数据? 我没有从谷歌看到任何关于准确性的数据,但我认为你获得的信息有多好有很多因素。一般来说,位置数据的 ip 对于非常低的精度(任何比城市更精细的东西)有点不可靠,但通常这就是我关心的全部。 马特,我想这取决于你想要做什么。显然,如果你在客户端上有这个,你可以将它发送到你的服务器,但如果你想真正从服务器端代码进行调用,这可能会很棘手,因为谷歌只是使用 http get 请求的 ip 作为输入。 很多时候精度甚至都达不到城市级别。国家可能是你能得到的最好的。 IP->Location 适用于 IP 地址的注册位置。例如,我家的 IP 注册到我的 IP,其地址在利兹。我在大约 400 英里外。 AOL 的 IP 地址来自 AOL 总部,但在美国各地使用(尽管在某些情况下它们被细分为州)。它永远不会非常准确。 【参考方案1】:

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

我在我的博客thenullreference.com 中对此进行了详细说明,但简而言之:


基本上您需要做的就是加载 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_code - ISO 3166-1 国家代码 ClientLocation.address.region - 美国的国家特定区域,这是州

*注意其中一些可以为空

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

还有人用这个吗?有没有人有他们使用的一样简单和更好的东西?这种方法有问题吗?

我不知道此解决方案的覆盖范围/准确性,但我认为 Google 会对其进行更新,并且可能相当不错。

【讨论】:

还有:code.google.com/p/geo-location-javascript 我只在 wipmania 上选择了这个,因为我认为 google 更稳定/可靠让我的 prod 应用程序依赖它。看起来这两种方法通常是相同的。 当你得到经度和纬度时,你会自动知道国家 现在已弃用【参考方案2】:

我使用了wipmania 免费的 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); 
);

检查运行here的sn-p。

【讨论】:

【参考方案3】:

我使用 MaxMind GeoIP City/ISP/Organization(Web 服务),50,000 次查询的成本为 20 美元,并且始终更新(请参阅http://www.maxmind.com/app/web_services#city)。我喜欢我不需要担心数据库更新的事实,因为它都是在服务器上完成的。

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

【讨论】:

以上是关于从IP地址获取用户纬度和经度的最简单方法是啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

给定纬度/经度,使用 JSONP 检索城市和州的最简单方法是啥? [关闭]

PHP - 从地址获取纬度和经度[关闭]

从网站本地化手机(获取其经度和纬度)的最佳方法是啥?

从 IP 地址或 PHP 中的纬度/经度获取邮政编码

如何从纬度和经度获取电话号码 [关闭]

如何在swift ios中从移动网络获取纬度和经度[关闭]