Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无提示地理定位_Javascript_Geolocation - Fatal编程技术网

Javascript 无提示地理定位

Javascript 无提示地理定位,javascript,geolocation,Javascript,Geolocation,我知道HTML5进行地理定位的方法,但需要注意的是,它必须提示用户获得许可 navigator.geolocation.getCurrentPosition 当我想在主页上进行地理定位以提供基于位置的定制内容时,这尤其令人恼火:没有人希望每次访问您的网站时都得到提示 其想法是使用外部服务根据IP地址或类似的内容进行地理定位,以获得对用户位置的不太准确的估计,并仅在该位置确实关闭时向用户提供提示。对于我可以使用的服务有什么好的建议吗 我知道谷歌已经做到了。它显示您当前的位置,而不给您任何提示。有

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

navigator.geolocation.getCurrentPosition
当我想在主页上进行地理定位以提供基于位置的定制内容时,这尤其令人恼火:没有人希望每次访问您的网站时都得到提示

其想法是使用外部服务根据IP地址或类似的内容进行地理定位,以获得对用户位置的不太准确的估计,并仅在该位置确实关闭时向用户提供提示。对于我可以使用的服务有什么好的建议吗

我知道谷歌已经做到了。它显示您当前的位置,而不给您任何提示。有人知道怎么做吗

MaxMind数据库很好,但这就需要维护一个庞大的IP数据库。首选API或谷歌服务

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

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

谷歌的
当前位置
之所以有效,是因为你在特定浏览器的某个时间点上给了谷歌访问你所在位置的权利。如果您打开任何新浏览器并执行相同的查询,您将看到它只能生成一个更通用的位置

我自己一直在努力寻找答案,而你使用谷歌的加载器是正确的。问题是,由于HTML5产品的可靠性和准确性,它或多或少被弃用

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


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

如果您不介意使用第三方API,您可以使用我们的服务。它使用客户端的IP地址,不需要用户的任何权限

Javascript示例:

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

然后您可以从
result.latitude
result.longitude
获取位置。提供更多数据,如国家、城市、邮政编码、时区,以及此IP地址是bot、垃圾邮件发送者还是TOR节点。

Google向我展示了整个州的一个城市,而询问用户的位置更可能是准确的。为什么不请求一次并保存它呢?我提供的内容利用了主页上的当前位置。给初次来访的人一个提示是很尴尬的。当我确定他或她的位置时,我当然会保存此信息。@Antony出于隐私考虑,如果不第一次提示用户,则无法从浏览器中收集此数据。使用基于IP的服务是您的最佳选择,但它也有自己的最佳猜测。也是我上次检查(2-3年前)它是作为付费服务提供的。对不起,我不记得我检查过的服务了。我确实注意到了类似的情况。但我恐怕我目前没有足够的(财政)资源来做这件事