我刚刚更新到Chrome64,并开始注意到我们的webapp应用程序中的这条消息:
[Violation] Only request geolocation information in response to a user gesture.
这似乎限制太多了。当我在谷歌地图中导航时,我不需要重复点击“更新位置”。位置轮询的替代方案是什么?
我们目前使用的代码如下:
let locInt = self.setInterval(function(){
navigator.geolocation.getCurrentPosition(geoSuccess, geoError, geoOptions);
},5000);
我们的应用是基于位置的,并依赖于不断更新的位置。这里首选的方法是什么?
发布于 2017-12-02 01:49:15
watchPosition()
方法允许您注册一个处理程序,每当设备的位置发生变化时,浏览器都会自动调用该处理程序。这比轮询更可取。
id = navigator.geolocation.watchPosition(success[, error[, options]])
https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition
发布于 2018-03-21 20:09:54
似乎有一个来自谷歌而不是的recommendation可以在页面加载时加载地理位置:
用户对在页面加载时自动请求其位置的页面不信任或感到困惑。不是在页面加载时自动请求用户的位置,而是将请求绑定到用户的手势,例如点击"Find Stores Near Me“按钮。确保手势清晰而明确地表达了对用户位置的需求。
不管你用的是watchPosition()
还是getCurrentPosition()
都没关系
灯塔收集在页面加载时执行的JavaScript。如果此代码包含对geolocation.getCurrentPosition()或geolocation.watchPosition()的调用,并且尚未授予地理位置权限,则请求用户的位置。
我们还注意到,自从Chrome更新以来,在获取用户的地理位置方面有很大的延迟。
发布于 2020-01-05 16:12:59
我找到了某种解决方案!这个问题是由于"HTTP“而存在的。如果您想使用javascript,如“地理位置”,您服务器或本地服务器必须是HTTPS协议,而不是。
https://stackoverflow.com/questions/47581575
复制相似问题