Google Maps API v3 - 基于 IP 的地理位置
Posted
技术标签:
【中文标题】Google Maps API v3 - 基于 IP 的地理位置【英文标题】:Google Maps API v3 - IP-based Geolocation 【发布时间】:2010-01-18 02:38:48 【问题描述】:有没有人能够使用 Google Maps API v3 javascript 根据个人 IP 获取地理位置?
在我看来,即使是 google 提供的示例也不起作用。
http://gmaps-samples-v3.googlecode.com/svn/trunk/commonloader/clientlocation.html
问题:
此示例是否适用于任何人?
如何使用 Google Maps API v3 获取基于个人 IP 的地理位置?
【问题讨论】:
【参考方案1】:Q1:它可以从这里工作,也可能在许多其他地方工作。但是请注意,来自 IP 地址的地理定位并不是一门非常可靠的科学。您将获得您的 ISP 的位置,该位置可能很远,此外,IP 到位置的数据库并不总是与最新更改保持同步,因此您可能没有任何特定 IP 的数据地址 - 这可能是您的情况。
MaxMind,提供流行的 IP 到位置数据库,发布了一些关于其数据库的统计数据:
GeoIP City Accuracy for Selected CountriesQ2:通过 Google Maps API v3 从 IP 地址获取地理位置的唯一方法是使用 example you provided 中使用的相同方法。但是,如果您发现任何其他地理定位数据库(例如 MaxMind GeoLite City)对您所在的国家/地区更准确,您可能希望自己根据 IP 地址进行地理定位,而不是将其委托给 Google 地图。
【讨论】:
也可以从这里工作。可能您的(OP)位置不在数据库中。 对我也很好(城市级别)。【参考方案2】:Web Google Maps API 似乎不提供 IP 地址地理定位服务(提供的 example 建议使用 W3C 地理定位标准,这通常需要用户采取行动)。
但是! Google 的Maps Geolocation API,通常用于移动客户端,可以在网络上使用,并且确实根据请求客户端的 IP 地址返回纬度和经度。
这里有一个快速的 jQuery 示例来演示它的使用:
$.ajax(
url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY',
data: JSON.stringify( "considerIp": "true" ),
type: 'POST',
contentType: 'application/json',
success: function(data)
if(data.location)
alert(data.location.lat + ', ' + data.location.lng);
else
alert('not found');
);
这是curl
等价物:
curl -H "Content-Type: application/json" -X POST -d '"considerIp": true' https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY
不要忘记在上面的示例中为您的 Google API 项目交换一个真正的 API 密钥和 enable the Geolocation API。
【讨论】:
有没有机会提供一个 html 示例? @RoccoTheTaco:这里是an example,使用与上面相同的代码。您将需要设置“GOOGLE_API_KEY”变量,否则这将不起作用(转到 Google API 控制台,创建一个新项目,启用 Geolocation API,然后获取 API 密钥)。 在谷歌地图网站上查看examples。以上是关于Google Maps API v3 - 基于 IP 的地理位置的主要内容,如果未能解决你的问题,请参考以下文章
Google Maps Api v3:如何更改方向(设置)面板中的默认航点标记?
在 PhoneGap iOS App 中使用 Google Maps JavaScript API v3
Google Maps API V3 中的 API 密钥是啥?