有没有人能够使用 Google Maps API v3 JavaScript 根据一个人的 IP 获得地理位置?
在我看来,即使是谷歌提供的例子也不起作用。
http://gmaps-samples-v3.googlecode.com/svn/trunk/commonloader/clientlocation.html
问题:
这个例子对任何人都有效吗?
如何使用 Google Maps API v3 根据一个人的 IP 获取地理位置?
有没有人能够使用 Google Maps API v3 JavaScript 根据一个人的 IP 获得地理位置?
在我看来,即使是谷歌提供的例子也不起作用。
http://gmaps-samples-v3.googlecode.com/svn/trunk/commonloader/clientlocation.html
问题:
这个例子对任何人都有效吗?
如何使用 Google Maps API v3 根据一个人的 IP 获取地理位置?
Q1:它在这里工作,也可能在许多其他地方工作。但是请注意,来自 IP 地址的地理定位并不是一门非常可靠的科学。您将获得 ISP 的位置,该位置可能很远,此外,IP 到位置的数据库并不总是与最新更改保持同步,因此您可能没有任何特定 IP 的数据地址 - 这可能是您的情况。
提供流行的 IP 到位置数据库的 MaxMind 发布了一些关于其数据库的统计数据:
Q2:通过 Google Maps API v3 从 IP 地址获取地理位置的唯一方法是使用您提供的示例中使用的相同方法。但是,如果您发现任何其他地理定位数据库(例如MaxMind GeoLite City)对您所在的国家/地区更准确,您可能希望自己从 IP 地址进行地理定位,而不是将其委托给 Google 地图。
Web Google Maps API 似乎不提供 IP 地址地理定位服务(提供的示例建议使用 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
不要忘记在上面的示例中交换一个真正的 API 密钥,并为您的 Google API 项目启用 Geolocation API。