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 Countries

Q2:通过 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:未删除标记

Google Maps Api v3:如何更改方向(设置)面板中的默认航点标记?

在 PhoneGap iOS App 中使用 Google Maps JavaScript API v3

Google Maps API V3 中的 API 密钥是啥?

google maps js v3 api教程 -- 在地图上添加标记

Google Maps v3 - 防止 API 加载 Roboto 字体