我很难在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。
答案 0 :(得分:0)
这是不可能的。同样的事情发生在某些html5标签上,例如webkit语音,你无法通过代码激活。抱歉,你对这件事没有多少控制权。