重置浏览器地理位置值

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。

以上是关于重置浏览器地理位置值的主要内容,如果未能解决你的问题,请参考以下文章

CABasicAnimation 在动画完成后重置为初始值

地理位置 API 权限 Web 浏览器

如何在 wkwebview 中重置地理位置的权限

显示 CGRect 位置重置我的图像位置

如何将核心位置重置为 ASK 以获得在 swiftUI 中请求位置的权限?

可以以编程方式重置位置和隐私设置吗?