Google Maps API v3 - 基于IP的地理定位

5
2个回答

5

Q1: 这个功能在这里以及其他很多地方都可以使用。但是请注意,通过IP地址进行地理定位并不是非常可靠的科学。您将获得您的ISP的位置,这可能相当遥远,此外,IP到位置数据库并不总是更新到最新更改,因此您可能没有特定IP地址的任何数据-这可能就是发生在您身上的情况。

MaxMind提供了一个流行的IP到位置数据库,并发布了一些关于其数据库的统计数据:

Q2: 通过Google Maps API v3从IP地址获取地理位置的唯一方法是使用您提供的示例中使用的相同方法。但是,如果您发现任何其他地理位置数据库(例如MaxMind GeoLite City)对于您的国家更准确,则可能希望自己从IP地址进行地理定位,而不是委托给Google Maps。


2
这里也可以工作。可能你(OP)的位置不在数据库中。 - dusoft
1
我这里也可以正常工作(城市级别)。 - Pekka

3
Google Maps API似乎没有提供IP地址地理定位服务(提供的示例建议使用W3C Geolocation标准,通常需要用户操作)。
然而!Google的Maps Geolocation API通常用于移动客户端,可以从Web上使用,并返回基于请求客户端的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项目启用地理定位API

你能提供一个 HTML 的例子吗? - Rocco The Taco
1
@RoccoTheTaco:这里有一个使用与上面相同代码的示例。您需要设置“GOOGLE_API_KEY”变量,否则此方法将无法正常工作(前往Google API控制台,创建新项目,启用地理位置API并获取API密钥)。 - Greg Sadetsky
这样做不是很危险吗?因为你把API密钥放在前端。 - Wiezalditzijn
1
@Wiezalditzijn 这种 API 密钥不是私密的,而是用于前端的阅读和使用。但你可以限制它的使用方式和位置,这是一个很好的做法——请参阅此处获取文档。 - Greg Sadetsky
1
@Wiezalditzijn 这种类型的 API 密钥并不是私密的,而是用于在前端进行阅读/使用的。不过,您可以限制它的使用方式/位置,这是一个良好的做法 - 请参阅此处的文档。 - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接