我知道HTML5的地理定位方式,但需要注意的是它必须提示用户进行许可。
navigator.geolocation.getCurrentPosition
当我想在主页上进行地理定位以根据位置提供定制内容时,会特别烦人:没有人喜欢每次访问您的网站时都会收到提示。
这个想法是使用外部服务根据IP地址或类似的东西进行地理定位,以获得对用户位置的不太准确的估计,并仅在该位置真正关闭时向用户提供提示。对于我可以用于此目的的服务,是否有任何好的建议?
我知道Google已经这样做了:current location。它会显示您当前的位置,而不会给您任何提示。有谁知道怎么做?
MaxMind数据库很好,但这需要维护一个巨大的IP数据库,仅用于此目的。首选API或Google服务。
我目前使用Google Loader返回的位置对象来估算位置,但不如上面的Google搜索示例准确。
google.loader.ClientLocation.latitude
google.loader.ClientLocation.longitude
答案 0 :(得分:1)
如果您不介意使用第三方API,则可以使用我们的服务https://ip-api.io。它使用客户端的IP地址,不需要用户的任何许可。
Javascript示例:
$.getJSON("http://ip-api.io/json/",
function(result) {
console.log(result);
});
然后,您可以从result.latitude
和result.longitude
获取位置信息。 https://ip-api.io提供了更多数据,如国家/地区,城市,邮政编码,时区以及此IP地址是机器人,垃圾邮件发送者还是TOR节点。
答案 1 :(得分:0)
Google current location
仅适用,因为您在某个特定时间点向Google授予了您所在位置的权利。如果您打开任何新浏览器并执行相同的查询,您会发现它只能产生更通用的位置。
我一直在尝试自己找到答案,而且你正在使用Google的加载器走上正轨。问题在于,由于HTML5产品的可靠性和准确性,它或多或少已被弃用。
如果你找到了解决方法,我很好奇。有些人可能会建议使用maxmind,但我发现它与google.loader一样准确(更不准确)。
为什么浏览器会提示输入这些信息是有道理的,我很惊讶除了使用IP之外没有某种解决方法/黑客。