重置浏览器地理位置值

时间:2014-08-28 21:11:26

标签: javascript ios html5 geolocation

问题: 我的移动JavaScript应用程序保持返回完全相同的坐标,超过500米。准确性不是问题的原因。令我困扰的是,返回的坐标完全相同。直到我访问了一个同样使用地理定位的外部网页,问题才得以解决。从那时起,我的应用程序运行正常。我怀疑我的页面缓存了不正确的位置,一旦浏览器检测到新网站请求位置,那么该值就会被刷新。这只是我的理论。

问题(S): 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应该像我在野生动物园的事实那么重要,但我确实尝试重置手机的位置和隐私设置。这并没有解决问题,只是确保浏览器再次提示我获得位置许可。

- 更新---

实际上可能是由“enableHighAccuracy”字段引起的。删除它已解决了该问题的第二次再次发生。当我找到更多关于为什么这个参数与预期效果相反的信息时,我会发布详细信息。

1 个答案:

答案 0 :(得分:4)

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

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