6

我知道 HTML5 进行地理定位的方法,但需要注意的是它必须提示用户获得许可。

navigator.geolocation.getCurrentPosition

当我想直接在主页上进行地理定位以根据位置提供定制内容时,这会变得特别烦人:没有人喜欢在每次访问您的网站时得到提示。

这个想法是使用外部服务根据 IP 地址或类似的东西进行地理定位,以获得对用户位置的不太准确的估计,并仅在该位置真正关闭时给用户一个提示。关于我可以为此目的使用的服务有什么好的建议吗?

我知道谷歌已经这样做了:当前位置。它会显示您当前的位置,而不会给您任何提示。有谁知道如何做到这一点?

MaxMind 数据库很好,但为了这个目的,需要维护一个巨大的 IP 数据库。首选 API 或 Google 服务。

我目前使用从 Google Loader 返回的位置对象来估计位置,但它不如上面的 Google 搜索示例准确。

google.loader.ClientLocation.latitude
google.loader.ClientLocation.longitude
4

2 回答 2

2

如果您不介意使用 3rd 方 API,可以使用我们的服务https://ip-api.io。它使用客户端的 IP 地址,不需要用户的任何许可。

Javascript 示例:

$.getJSON("http://ip-api.io/json/",
    function(result) {
        console.log(result);
    });

然后您可以从result.latitude和获取位置result.longitudehttps://ip-api.io提供更多数据,例如国家、城市、邮政编码、时区以及此 IP 地址是机器人、垃圾邮件发送者还是 TOR 节点。

于 2017-08-09T19:36:39.860 回答
0

谷歌current location之所以有效,是因为您在给定浏览器的某个时间点授予了谷歌您所在位置的权利。如果您要打开任何新浏览器并执行相同的查询,您会发现它只能产生一个更通用的位置。

我一直在尝试自己找到这个问题的答案,而您使用 Google 的加载程序走在了正确的轨道上。问题在于,由于 HTML5 产品的可靠性和准确性,它或多或少地被弃用了。

我很好奇您是否找到了解决方法。有些人可能会建议使用 maxmind,尽管我发现它与 google.loader 一样准确(更不准确)。

为什么浏览器会提示输入此类信息是有道理的,我只是很惊讶除了使用 IP 之外没有某种解决方法/黑客。

于 2017-02-21T06:49:52.800 回答