Геолокация Chrome, кажется, игнорирует параметр maximumAge

Я изо всех сил пытаюсь использовать параметр maximumAge в геолокации HTML. То, как это работает в Chrome, не соответствует спецификации.

Я прочитал спецификацию API геолокации и, насколько я понимаю, если вы установите для параметра maximumAge значение 0, вы всегда должны получать новую позицию.

Атрибут maximumAge указывает, что приложение желает принять кэшированную позицию, возраст которой не превышает указанное время в миллисекундах. Если для параметра maximumAge установлено значение 0, реализация должна немедленно попытаться получить новый объект позиции. Установка параметра maximumAge на Infinity должна определять, как реализация будет возвращать кэшированную позицию независимо от ее возраста. Если реализация не имеет доступной кэшированной позиции, возраст которой не превышает указанный 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 установлено значение 0?

Это в Chrome, кстати.

9
задан Richard 22 November 2011 в 23:56
поделиться