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});
}