【问题标题】: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”字段引起的。删除它已经解决了该问题的第二次再次发生。当我找到有关此参数为何与预期效果相反的更多信息时,我将发布详细信息。

【问题讨论】:

    标签: javascript ios html geolocation


    【解决方案1】:

    清除位置缓存: 如果您不想要缓存值,请将 maximumAge 设置为 0。我误解了 maximumAge 字段。我把它和超时混淆了。它指定缓存位置值应该使用多长时间。

    位置值不准确:对于零星的错误值,您需要使用 watchCurrentPosition 递归获取当前位置信息,然后与Position.coor.accuracy 核对。不要假设返回的第一个值总是低于您想要的阈值。

    【讨论】:

    • 不要递归调用getCurrentPosition - 这就是watchPosition 的用途。另外,调用时将enableHighAccuracy设置为true。
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多