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

Javascript Chrome地理定位似乎忽略了maximumAge参数,javascript,html,google-chrome,geolocation,location,Javascript,Html,Google Chrome,Geolocation,Location,我正在努力在HTML地理位置中使用maximumAge参数。它在Chrome中的工作方式似乎与规范不符 根据我的理解,如果你把最大值设为零,你应该总是得到一个新的位置 maximumAge属性表示应用程序愿意 接受年龄不大于指定年龄的缓存位置 以毫秒为单位的时间。如果maximumAge设置为0,则实现 必须立即尝试获取新的位置对象。设定 maximumAge to Infinity必须确定要返回 缓存位置,无论其年龄大小。如果一个实现没有 有一个可用的缓存位置,其年龄不大于 指定最大值,则必须

我正在努力在HTML地理位置中使用maximumAge参数。它在Chrome中的工作方式似乎与规范不符

根据我的理解,如果你把最大值设为零,你应该总是得到一个新的位置

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

但是,这是我的代码:

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)
这是得到的位置和当前时间之间的半小时差

我想这可能只是卫星时间和本地时间之间的差异,但我反复点击刷新,位置日期没有改变,即使当前日期是

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


这是铬合金的,顺便说一句。

这是不可能的。一些html5标记(如webkit speech)也会发生同样的情况,您无法通过代码激活这些标记。对不起,您对这件事没有太多控制权。

我也注意到Safari mobile上有类似的行为。非常令人沮丧。我希望我知道一种在需要时强制进行新的地理查找的方法。我想,就像您所做的那样,将maximumAge设置为零可以做到这一点(正如规范所解释的)。猜不到…似乎根本无法控制这一点:根据您的用例,这个问题可能非常烦人。我通过设置一个标志并忽略成功回调中返回的第一个position对象来解决这个问题。面对同样的问题,获取位置(缓存)甚至关闭设备的位置服务。