Non riesco a utilizzare il parametro maximumAge nella geolocalizzazione HTML. Il modo in cui funziona in Chrome non sembra corrispondere alle specifiche.La geolocalizzazione di Chrome sembra ignorare il parametro maximumAge
Ho read through the geolocation API spec e da quello che posso capire, se si imposta il massimo di Age a zero, si dovrebbe sempre ottenere una nuova posizione.
L'attributo maximumAge indica che l'applicazione è disposto a accettare una posizione cache cui età non è maggiore del specificato tempo in millisecondi. Se maximumAge è impostato su 0, l'implementazione deve tentare immediatamente di acquisire un nuovo oggetto posizione. L'impostazione di maximumAge to Infinity deve determinare l'implementazione per restituire una posizione memorizzata nella cache indipendentemente dalla sua età. Se un'implementazione non ha una posizione memorizzata nella cache la cui età non è maggiore del valore massimo di specificato, deve acquisire un nuovo oggetto posizione. Nel caso di watchPosition(), maximumAge fa riferimento alla prima posizione dell'oggetto restituita dall'implementazione.
Tuttavia, questo è il mio codice:
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
});
E sto vedendo il seguente:
Wed Nov 23 2011 10:25:43 GMT+0000 (GMT), Wed Nov 23 2011 10:52:16 GMT+0000 (GMT)
Ecco mezza differenza di un'ora tra la posizione ottenuta e l'ora corrente.
Ho pensato che potrebbe essere solo la differenza tra l'ora del satellite e l'ora locale, ma ho ripetuto il refresh ripetutamente e il PositionDate non sta cambiando, anche se l'attuale Data è.
Perché la stessa posizione memorizzata nella cache viene riutilizzata, anche se maximumAge è impostato su zero?
Questo è in Chrome, BTW.
Ho notato un comportamento simile anche su Safari-mobile. Molto frustrante. Vorrei sapere un modo per forzare una nuova geo-ricerca quando ne ho bisogno. Ho pensato, come hai fatto tu, che l'impostazione di maximumAge to zero lo farebbe (come spiega la specifica). Indovina ... – robmclarty
Sembra che semplicemente non ci sia alcun controllo su questo: http://stackoverflow.com/questions/14814256/javascript-geolocation-caching – robmclarty
A seconda del tuo caso d'uso questo problema può essere molto fastidioso. Mi aggiro impostando un flag e ignorando il primo oggetto di posizione restituito nella callback di successo. – bardu