HTML5 - Geolocalizzazione

L'API di geolocalizzazione HTML5 ti consente di condividere la tua posizione con i tuoi siti web preferiti. Un JavaScript può catturare la tua latitudine e longitudine e può essere inviato al server web back-end e fare cose fantasiose che riconoscono la posizione come trovare attività commerciali locali o mostrare la tua posizione su una mappa.

Oggi la maggior parte dei browser e dei dispositivi mobili supporta l'API di geolocalizzazione. Le API di geolocalizzazione funzionano con una nuova proprietà dell'oggetto navigatore globale, ovvero. Oggetto di geolocalizzazione che può essere creato come segue:

var geolocation = navigator.geolocation;

L'oggetto di geolocalizzazione è un oggetto di servizio che consente ai widget di recuperare informazioni sulla posizione geografica del dispositivo.

Metodi di geolocalizzazione

L'oggetto di geolocalizzazione fornisce i seguenti metodi:

Sr.No. Metodo e descrizione
1 getCurrentPosition ()

Questo metodo recupera la posizione geografica corrente dell'utente.

2 watchPosition ()

Questo metodo recupera gli aggiornamenti periodici sulla posizione geografica corrente del dispositivo.

3 clearWatch ()

Questo metodo annulla una chiamata watchPosition in corso.

Esempio

Di seguito è riportato un codice di esempio per utilizzare uno dei metodi precedenti:

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler);
}

Qui showLocation e errorHandler sono metodi di callback che verrebbero utilizzati per ottenere la posizione effettiva come spiegato nella sezione successiva e per gestire gli errori se ce ne sono.

Proprietà posizione

I metodi di geolocalizzazione getCurrentPosition () e getPositionUsingMethodName () specificano il metodo di callback che recupera le informazioni sulla posizione. Questi metodi vengono chiamati in modo asincrono con un oggettoPosition che memorizza le informazioni complete sulla posizione.

Il Positionoggetto specifica la posizione geografica corrente del dispositivo. La posizione è espressa come un insieme di coordinate geografiche insieme a informazioni su direzione e velocità.

La tabella seguente descrive le proprietà dell'oggetto Position. Per le proprietà facoltative, se il sistema non è in grado di fornire un valore, il valore della proprietà è impostato su null.

Proprietà genere Descrizione
coords oggetti Specifica la posizione geografica del dispositivo. La posizione è espressa come un insieme di coordinate geografiche insieme a informazioni su direzione e velocità.
coords.latitude Numero Specifica la stima della latitudine in gradi decimali. L'intervallo di valori è [-90,00, +90,00].
coords.longitude Numero Specifica la stima della longitudine in gradi decimali. L'intervallo di valori è [-180,00, +180,00].
coords.altitude Numero [Facoltativo] Specifica l'altitudine stimata in metri sopra l'ellissoide WGS 84.
coords.accuracy Numero [Facoltativo] Specifica la precisione delle stime di latitudine e longitudine in metri.
coords.altitudeAccuracy Numero [Facoltativo] Specifica la precisione della stima dell'altitudine in metri.
coords.heading Numero [Facoltativo] Specifica la direzione di movimento corrente del dispositivo in gradi contando in senso orario rispetto al nord geografico.
coords.speed Numero [Facoltativo] Specifica la velocità al suolo corrente del dispositivo in metri al secondo.
timestamp Data Specifica l'ora in cui le informazioni sulla posizione sono state recuperate e l'oggetto Posizione creato.

Esempio

Di seguito è riportato un codice di esempio che utilizza l'oggetto Position. Qui il metodo showLocation è un metodo di callback -

function showLocation( position ) {
   var latitude = position.coords.latitude;
   var longitude = position.coords.longitude;
   ...
}

Gestione degli errori

La geolocalizzazione è complicata ed è molto richiesta per rilevare eventuali errori e gestirli con garbo.

I metodi di geolocalizzazione getCurrentPosition () e watchPosition () utilizzano un metodo di callback del gestore degli errori che fornisce PositionErroroggetto. Questo oggetto ha le seguenti due proprietà:

Proprietà genere Descrizione
codice Numero Contiene un codice numerico per l'errore.
Messaggio Corda Contiene una descrizione leggibile dell'errore.

La tabella seguente descrive i possibili codici di errore restituiti nell'oggetto PositionError.

Codice Costante Descrizione
0 ERRORE SCONOSCIUTO Il metodo non è riuscito a recuperare la posizione del dispositivo a causa di un errore sconosciuto.
1 PERMESSO NEGATO Il metodo non è riuscito a recuperare la posizione del dispositivo perché l'applicazione non dispone dell'autorizzazione per utilizzare il servizio di localizzazione.
2 POSIZIONE_ NON DISPONIBILE Non è stato possibile determinare la posizione del dispositivo.
3 TEMPO SCADUTO Il metodo non è stato in grado di recuperare le informazioni sulla posizione entro l'intervallo di timeout massimo specificato.

Esempio

Di seguito è riportato un codice di esempio che utilizza l'oggetto PositionError. Qui il metodo errorHandler è un metodo di callback -

function errorHandler( err ) {
   
   if (err.code == 1) {
      
      // access is denied
   }
   ...
}

Opzioni di posizione

Di seguito è riportata la sintassi effettiva del metodo getCurrentPosition ():

getCurrentPosition(callback, ErrorCallback, options)

Qui il terzo argomento è il PositionOptions oggetto che specifica una serie di opzioni per il recupero della posizione geografica del dispositivo.

Di seguito sono riportate le opzioni che possono essere specificate come terzo argomento:

Proprietà genere Descrizione
enableHighAccuracy Booleano Specifica se il widget desidera ricevere la stima della posizione più accurata possibile. Per impostazione predefinita, questo è falso.
tempo scaduto Numero La proprietà timeout è il numero di millisecondi che la tua applicazione web è disposta ad attendere per una posizione.
maximumAge Numero Specifica l'ora di scadenza in millisecondi per le informazioni sulla posizione memorizzata nella cache.

Esempio

Di seguito è riportato un codice di esempio che mostra come utilizzare i metodi sopra menzionati:

function getLocation() {
   var geolocation = navigator.geolocation;
   geolocation.getCurrentPosition(showLocation, errorHandler, {maximumAge: 75000});
}