Ora che abbiamo padroneggiato la teoria il draft ci viene in aiuto portandoci all’attenzione una serie di esempi divisi per tipo di richiesta:
Richieste "one-shot"
function success (pos) {
// # Mostra una mappa centrata a [ pos.coords.latitude, pos.coords.longitude ]
}
// # La richiesta
navigator.geolocation.getCurrentPosition(success);
La stessa richiesta implementata gestita tramite una closure.
// # La richiesta
navigator.geolocation.getCurrentPosition(function(pos) {
// # Mostra una mappa centrata a [ pos.coords.latitude, pos.coords.longitude ]
});
Richieste ripetute (update posizione) e gestione degli errori (error handler)
// # Gestione della visualizzazione (success callback)
function success(pos) { }
// # Gestione degli errori (error callback)
function error (error) { }
// # Richiesta ripetuta
// # Creazione di un (watch) ID per le successive richieste
// # Notate come venga definito anche il nome della funzione che gestirà il
// # successo e quello per l' error handler
var watchId = navigator.geolocation.watchPosition(success, error);
function clickReset() {
// # Reset delle informazioni al click su di un bottone
navigator.geolocation.clearWatch(watchId);
}
Richiesta posizione cached
// # Effettua la richiesta di una posizione cached (vecchia al massimo di 5 minuti)
// # Nel caso non ne esistessero di così "fresche" verrà effettuata la richiesta per
// # ottenerne una nuova
navigator.geolocation.getCurrentPosition(success, error, { maximumAge: 300000 });
// # OK
function success (pos) { /* mostra la posizione */ }
// # KO
function error(error) { /* gestisci l'errore */ }
Richiesta forzata di una posizione cached
// # Effettua la richiesta di una posizione cached (vecchia al massimo di 5 minuti)
// # Nel caso non ne esistessero non verrà inoltrata una ulteriore richiesta ma il controllo
// # passerà direttamente all'error handler che potrà gestire la situazione
navigator.geolocation.getCurrentPosition(success, error, { maximumAge: 300000, timeout: 0 });
// # OK
function success (pos) { /* mostra la posizione */ }
// # KO
function error(error) {
// # È importante distinguere tra gli errori
switch(error.code) {
case error.TIMEOUT:
// # Possiamo decidere di mostrare una posizione di default od effettuare la richiesta
// # per una nuova posizione
break;
default:
// # gestisci ogni altro tipo di errore
break;
};
}
Richiesta di una qualsiasi posizione cached
// # Effettua la richiesta di una posizione cached qualsiasi
// # Qualora non ne esistessero il controllo passerà direttamente all'error handler (error.TIMEOUT)
navigator.geolocation.getCurrentPosition(success, error, { maximumAge: Infinity, timeout: 0 });
// # OK
function success (pos) {
// # Abbiamo la certezza si tratto di una posizione cached
}
// # KO
function error(error) { /* Gestione come nell'esempio precedente */ }
Pubblicitร