Chrome地理位置似乎忽略了maximumAge参数

时间:2011-11-23 10:56:19

标签: javascript html5 google-chrome geolocation location

我很难在HTML地理定位中使用maximumAge参数。它在Chrome中的工作方式似乎与规范不符。

read through the geolocation API spec并且根据我的理解,如果你将maximumAge设置为零,你应该总是得到一个新的位置。

  

maximumAge属性表示应用程序愿意   接受年龄不大于指定的缓存位置   以毫秒为单位的时间。如果maximumAge设置为0,则执行   必须立即尝试获取新的位置对象。设置   maximumAge to Infinity必须确定返回a的实现   缓存的位置,无论其年龄。如果实现没有   有一个缓存的位置,其年龄不大于   指定maximumAge,然后它必须获取一个新的位置对象。在   如果是watchPosition(),则maximumAge指的是第一个位置   实现返回的对象。

然而,这是我的代码:

function gpsSuccess(pos) {
   var positionDate = new Date(pos.timestamp);
   var currentDate = new Date();
   console.log(positionDate.toLocaleString(), currentDate.toLocaleString());
}
watchId = navigator.geolocation.watchPosition(gpsSuccess,
    gpsFail, {
        enableHighAccuracy: true,
        maximumAge: 0,
        timeout: 27000
});

我看到以下内容:

Wed Nov 23 2011 10:25:43 GMT+0000 (GMT), Wed Nov 23 2011 10:52:16 GMT+0000 (GMT)

所以获得的位置与当前时间之间的半小时差异。

我认为它可能只是卫星时间和当地时间之间的差异,但我一直在重复刷新,并且positionDate没有改变,即使currentDate是。

为什么重用相同的缓存位置,即使maximumAge设置为零?

这是Chrome,BTW。

1 个答案:

答案 0 :(得分:0)

这是不可能的。同样的事情发生在某些html5标签上,例如webkit语音,你无法通过代码激活。抱歉,你对这件事没有多少控制权。