我有以下Javascript代码,用于获取用户本地化:
navigator.geolocation.getCurrentPosition(getStores, getStoresError, {
'enableHighAccuracy' : true,
'timeout' : 10000,
'maximumAge' : 0
});
当用户接受或拒绝本地化请求时,都会调用这两个回调。但如果在10秒内没有提供答案,我预计超时会到期,并且会调用getStoresError。这不会发生。有什么想法吗?
答案 0 :(得分:2)
在用户允许甚至尝试计算其位置之前,超时计时器才开始倒计时
var options = {timeout:10000,enableHighAccuracy:true,maximumAge:0};
navigator.geolocation.getCurrentPosition(getStores,getStoresError,options);
答案 1 :(得分:0)
尝试创建一个全局变量,该变量仅在navigator.geolocation.getCurrentPosition的success方法上更新。然后,您可以创建一个持续10秒的setTimeout函数,该函数检查该值是否已更新。
唯一的问题是,如果用户单击“允许”并且您的超时在检索位置之前到期,则可能会过早地处理响应。
答案 2 :(得分:0)
在开发环境中尝试了很多之后。我终于发现从 2016 年开始,chrome 在不安全的环境中禁用了该 api,必须通过 https 完成,希望这可以节省人们的时间。请参阅下面的链接,https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only。