没有提示的地理位置

时间:2012-12-24 06:50:12

标签: javascript geolocation

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

navigator.geolocation.getCurrentPosition

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

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

我知道Google已经这样做了:current location。它会显示您当前的位置,而不会给您任何提示。有谁知道怎么做?

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

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

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

2 个答案:

答案 0 :(得分:1)

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

Javascript示例:

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

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

答案 1 :(得分:0)

Google current location仅适用,因为您在某个特定时间点向Google授予了您所在位置的权利。如果您打开任何新浏览器并执行相同的查询,您会发现它只能产生更通用的位置。

我一直在尝试自己找到答案,而且你正在使用Google的加载器走上正轨。问题在于,由于HTML5产品的可靠性和准确性,它或多或少已被弃用。

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

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