Si on met
maximumAge a
Infinity et
timeout à
0, on ne devrait récupérer que les positions
qui sont dans le cache.
Exemple de code :
var oPositionOptions = { enableHighAccuracy:false, maximumAge:"Infinity", timeout:0 }; Si il n'y a pas de Position dans le cache, selon les spécifications
c'est l'errorCallback qui doit être déclenché avec un code 3 (PositionError.TIMEOUT).
Cependant certains navigateurs comme Firefox ou Internet Explorer
vont chercher une nouvelle position pour la mettre dans le cache et déclenchent le
successCallback au lieu de l'errorCallback.
Dans le fonctionnement spécifié dans spécifications W3C, vous devez faire un appel à
getCurrentPosition() quand le code est
PositionError.TIMEOUT afin de mettre une position en cache.
Exemple de code :
function PositionCallback(Position){
alert(Position.coords.latitude);
}
function PositionErrorCallback(PositionError){
switch(PositionError.code) {
case PositionError.TIMEOUT:
navigator.geolocation.getCurrentPosition( PositionCallback, PositionErrorCallbackB);
break;
case PositionError.PERMISSION_DENIED:
//action
break;
case PositionError.POSITION_UNAVAILABLE:
//action
break;
case PositionError.UNKNOWN_ERROR:
//action
break;
}
}
function PositionErrorCallbackB(PositionError){
//action
}
var PositionOptions = {enableHighAccuracy:false, maximumAge:"Infinity", timeout:0};
geolocation.getCurrentPosition( PositionCallback, PositionErrorCallback, PositionOptions );