2014-08-28 76 views
1

问题: 我的移动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上的事实一样重要,但我确实尝试重置手机的位置和隐私设置。这并没有解决问题,只是确保浏览器会再次提示我进行位置许可。

--update ---

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

回答

4

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

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

+0

不要递归调用'getCurrentPosition' - 这就是'watchPosition'的用途。另外,在调用时将'enableHighAccuracy'设置为true。 – 2014-09-01 13:11:23

+0

是的。刚做了一个编辑。 – 2014-09-02 16:39:16