back to top

Le Geolocation APIs (versione 2) – Esempi

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ร 

In questa guida...