重置浏览器地理位置值
Posted
技术标签:
【中文标题】重置浏览器地理位置值【英文标题】:Resetting browser geolocation values 【发布时间】:2014-08-28 21:11:26 【问题描述】:问题: 我的移动 javascript 应用程序一直返回完全相同的坐标,它们相差 500 多米。准确性不是问题。困扰我的是返回完全相同的坐标的事实。直到我访问了同样使用地理定位的外部网页后,问题才得以解决。从那时起,我的应用程序运行正常。我怀疑以某种方式为我的页面缓存了一个不正确的位置,并且一旦浏览器检测到一个新站点正在请求位置,那么该值就会被刷新。这只是我的理论。
问题:
JavaScript 是否缓存位置信息?如果是这样,is there any known means of forcing a refresh?
我上面描述的解决方案在测试之外是不实用的。
代码:
navigator.geolocation.getCurrentPosition(processLocation,locationError,
timeout: 60000,
enableHighAccuracy: true,
maximumAge: Infinity
);
function processLocation(position)
sendLocationToServer(position.coords.latitude,position.coords.longitude);
硬件:我使用的是 iPhone 和 safari 网络浏览器。我认为使用 iPhone 并不像我在 safari 上那样重要,但我确实尝试过重置手机的位置和隐私设置。这并没有解决问题,只是确保浏览器会再次提示我提供位置权限。
--更新--
它实际上可能是由“enableHighAccuracy”字段引起的。删除它已经解决了该问题的第二次再次发生。当我找到有关此参数为何与预期效果相反的更多信息时,我将发布详细信息。
【问题讨论】:
【参考方案1】:清除位置缓存:
如果您不想要缓存值,请将 maximumAge
设置为 0。我误解了 maximumAge 字段。我把它和超时混淆了。它指定缓存位置值应该使用多长时间。
位置值不准确:对于零星的错误值,您需要使用 watchCurrentPosition 递归获取当前位置信息,然后与Position.coor.accuracy
核对。不要假设返回的第一个值总是低于您想要的阈值。
【讨论】:
不要递归调用getCurrentPosition
- 这就是watchPosition
的用途。另外,调用时将enableHighAccuracy
设置为true。以上是关于重置浏览器地理位置值的主要内容,如果未能解决你的问题,请参考以下文章