Per molti anni le mappe cartacee sono diventate un antico. Sono stati sostituiti da dispositivi di navigazione GPS dedicati e applicazioni mobili, che sono diventati onnipresenti. Li trovi in auto e, cosa più importante, su tablet e smartphone.
Una delle caratteristiche principali di un dispositivo di navigazione è il rilevamento della posizione corrente del dispositivo e l'aggiornamento in corso di modifica. Questo ci aiuta a spostarci da una posizione all'altra dandoci indicazioni.
Oggi, siamo abbastanza fortunati da avere una geolocalizzazione supportata nativamente dai browser. In questo articolo discuteremo l'API di geolocalizzazione, che consente alle applicazioni di rilevare e tracciare la posizione del dispositivo.
La possibilità di rilevare la posizione del dispositivo ha una vasta gamma di applicazioni. Sul Web, ad esempio, Google, Microsoft e Yahoo utilizzano la posizione dell'utente per personalizzare la SERP (pagina dei risultati del motore di ricerca) in base alla posizione dell'utente. La localizzazione è un'altra ottima soluzione per la geolocalizzazione.
L'API di geolocalizzazione definisce un'interfaccia di alto livello per le informazioni sulla posizione, come latitudine e longitudine, che è collegata al dispositivo che ospita l'implementazione. La stessa API è agnostica delle fonti di informazioni sulla posizione sottostanti.
Le fonti comuni di informazioni sulla posizione includono il Global Positioning System (GPS) e le informazioni sulla posizione derivate da segnali di rete quali indirizzo IP del dispositivo, RFID, Wi-Fi, Bluetooth, indirizzi MAC, ID cella GSM / CDMA e input dell'utente. Non viene fornita alcuna garanzia che l'API restituisca la posizione effettiva del dispositivo.
L'API di geolocalizzazione è una raccomandazione W3C che indica che la specifica è stabile. Possiamo supporre che non cambierà in futuro a meno che non venga elaborata una nuova versione. Vale la pena notare che l'API di geolocalizzazione non fa ufficialmente parte delle specifiche HTML5, perché è stata sviluppata separatamente.
Ora che sappiamo cos'è l'API di geolocalizzazione e cosa può fare, è tempo di vedere quali metodi espone agli sviluppatori.
L'API utilizza diverse fonti per rilevare la posizione del dispositivo. Ad esempio, su un notebook o un computer desktop senza un chip GPS, è probabile che la posizione venga dedotta dall'indirizzo IP del dispositivo, il che significa che la posizione restituita dall'API non è molto accurata.
Su un dispositivo mobile, tuttavia, l'API può utilizzare informazioni provenienti da fonti multiple e più accurate, come il chip GPS del dispositivo, la connessione di rete (Wi-Fi, 3G, HSPA +) e la cella GSM / CDMA. Puoi aspettarti informazioni di localizzazione più accurate su un dispositivo mobile, specialmente se il GPS è abilitato.
Le specifiche dell'API di geolocalizzazione riguardano anche la privacy e le autorizzazioni. In effetti, la specifica afferma chiaramente che l'autorizzazione dell'utente deve essere esplicitamente ottenuta prima di abilitare l'API.
Ciò significa che è necessario che il browser visualizzi una notifica all'utente che chiede il permesso. Di seguito viene mostrato un esempio del messaggio mostrato all'utente (Google Maps).
L'API espone tre metodi che appartengono al window.navigator.geolocation
oggetto. I metodi forniti sono:
getCurrentPosition
watchPosition
clearWatch
if (window.navigator && window.navigator.geolocation) // Posso guardarti ovunque tu vada ... else // Not supported
Per rilevare la posizione del dispositivo che chiamiamo getCurrentPosition
o watchPosition
, a seconda delle esigenze. Entrambi i metodi eseguono lo stesso compito con solo alcune piccole differenze.
Per ottenere la posizione del dispositivo, getCurrentPosition
e watchPosition
fare una richiesta asincrona. La differenza tra questi metodi è quella getCurrentPosition
esegue una richiesta una tantum, mentre watchPosition
controlla la posizione del dispositivo per le modifiche e avvisa l'applicazione quando si verifica un cambio di posizione.
L'API di geolocalizzazione è abbastanza intelligente da invocare solo la callback di successo di watchPosition
-invocato quando si ottiene la posizione, se la posizione dell'utente cambia.
Un'altra importante differenza tra getCurrentPosition
e watchPosition
è il valore di ritorno di ciascun metodo. Il getCurrentPosition
il metodo non restituisce nulla, mentre watchPosition
restituisce un identificatore che può essere utilizzato per impedire all'API di monitorare la posizione del dispositivo attraverso il clearWatch
funzione.
Le firme di getCurrentPosition
e watchPosition
Assomiglia a questo:
// Ottieni posizione corrente getCurrentPosition (successCallback [, errorCallback [, options]]) // Watch Position watchPosition (successCallback [, errorCallback [, options]]))
Come indicano le firme, ciascuna funzione accetta tre parametri. È richiesto solo il primo argomento, la funzione di callback di successo. Diamo uno sguardo più da vicino a ogni argomento.
successCallback
: Questa funzione di callback viene eseguita dopo aver ottenuto con successo la posizione dell'utente. La richiamata accetta a posizione
oggetto che contiene le informazioni sulla posizione del dispositivo.errorCallback
: La richiamata di errore viene eseguita quando si verifica un errore. La richiamata di errore accetta un errore
oggetto, contenente informazioni sul tipo di errore che si è verificato.opzioni
: Il opzioni
oggetto offre allo sviluppatore la possibilità di configurare la richiesta asincrona.Dai un'occhiata ai seguenti frammenti per vedere come puoi usarli getCurrentPosition
e watchPosition
per ottenere la posizione del dispositivo.
var geolocation = null; if (window.navigator && window.navigator.geolocation) geolocation = window.navigator.geolocation; if (geolocalizzazione) geolocation.getCurrentPosition (function (position) console.log (position);); var identifier = geolocation.watchPosition (function (position) console.log (posizione);); console.log (identificativo);
Nella sezione precedente, ho citato il clearWatch
funzione. Questa funzione ti consente di interrompere il monitoraggio della posizione del dispositivo, avviata invocando watchPosition
.
Il clearWatch
la funzione accetta un argomento obbligatorio, l'identificatore ci ha restituito dopo aver invocato watchPosition
.
Ora che abbiamo coperto i dettagli tecnici dell'API di geolocalizzazione, è ora di esplorare il posizione
, errore
, e opzioni
oggetti restituiti dall'API di geolocalizzazione.
Posizione
I metodi esposti dall'API di geolocalizzazione accettano o restituiscono tre tipi di oggetti. Il primo oggetto che ci interessa è il posizione
oggetto, che contiene le informazioni sulla posizione a cui siamo interessati. Dai un'occhiata alla seguente tabella per avere un'idea delle informazioni che contiene.
L'oggetto posizione restituito dai callback di successo di getCurrentPosition
e watchPosition
contiene a timestamp
e coords
proprietà. Il coords
la proprietà è un oggetto contenente la posizione latitudine
, longitudine
, altitudine
, precisione
, altitudeAccuracy
, intestazione
, e velocità
.
La maggior parte dei browser desktop non restituirà un valore per altitudine
, altitudeAccuracy
, intestazione
, e velocità
proprietà. I dispositivi mobili, tuttavia, come smartphone e tablet, forniranno informazioni più accurate grazie alla presenza di un chip GPS o di altro hardware che aiuta a rilevare la posizione del dispositivo.
Il timestamp
proprietà conserva il tempo in cui è stata rilevata la posizione, che può essere utile se è necessario sapere quanto è fresco il dato restituito.
PositionError
Il errore
oggetto del callback di errore, il secondo argomento opzionale di getCurrentPosition
e watchPosition
, ha un codice
e a Messaggio
proprietà.
Il Messaggio
proprietà descrive brevemente il tipo di errore. Il codice
la proprietà può avere uno dei quattro valori:
0
: La richiesta non è riuscita, ma la ragione non è nota.1
: La richiesta non è riuscita perché l'utente non ha autorizzato a utilizzare la posizione del dispositivo.2
: La richiesta non è riuscita a causa di un errore di rete.3
: La richiesta non è riuscita perché è stato necessario troppo tempo per risolvere la posizione del dispositivo.PositionOptions
Il terzo argomento opzionale di getCurrentPosition
e watchPosition
è un PositionOptions
oggetto, consentendo allo sviluppatore di personalizzare la richiesta asincrona.
L'oggetto PositionOptions al momento supporta tre opzioni:
enableHighAccuracy
: Se il valore è impostato su vero
, la pagina Web o l'applicazione indica che desidera il risultato migliore possibile, il più preciso possibile. Ciò potrebbe comportare un tempo di risposta più lento o un maggiore consumo energetico. Il valore predefinito è falso
.tempo scaduto
: Questa proprietà specifica il numero massimo di millisecondi dopo il quale la richiesta deve essere considerata fuori dal tempo. Il valore predefinito è Infinito
.maximumAge
: Quando una richiesta di posizione ha esito positivo, il browser memorizza il risultato nella cache per un utilizzo successivo. Il maximumAge
proprietà specifica il tempo dopo il quale la cache deve essere invalidata. Il valore predefinito è 0
, il che significa che la richiesta non deve essere memorizzata nella cache.Il supporto per l'API di geolocalizzazione è veramente buono. Questo è vero per i browser desktop e mobili. Dai un'occhiata a questo riepilogo per avere un'idea di quali browser desktop supportano l'API di geolocalizzazione:
Il supporto nei browser per dispositivi mobili è ancora migliore, come puoi vedere in questo riepilogo:
L'API di geolocalizzazione è ampiamente supportata. Potresti chiederti cosa puoi fare se incontri un browser che non supporta l'API di geolocalizzazione. Che ci crediate o no, esistono diversi polyfills e shim per ovviare a questo problema. Le soluzioni più importanti sono quella creata da Manuel Bieh e uno spessore leggero creato da Paul Irish.
Ora che conosciamo i dettagli dell'API di geolocalizzazione, è tempo di vederlo in azione. Questa demo è completamente funzionale e utilizza tutti i metodi e gli oggetti descritti in questo articolo. Lo scopo è semplice, ogni volta che viene eseguita una richiesta per rilevare la posizione del dispositivo, i dati di posizione vengono mostrati all'utente in formato elenco.
La demo contiene tre pulsanti, che consentono di selezionare l'operazione che si desidera eseguire. La demo rileva anche se il browser supporta o meno l'API di geolocalizzazione. In caso contrario, vedrai il messaggio "API non supportata" e i pulsanti sono disabilitati.
Il codice sorgente della demo è mostrato sotto, ma puoi anche giocare con una demo live dell'API di geolocalizzazione.
Demo API Geolocation di Aurelio De Rosa API di geolocalizzazione
API non supportataInformazione
- La tua posizione è non disponibilelatitudine, non disponibile° longitudine (con una precisione di non disponibile metri)
- La tua altitudine è non disponibile metri (con una precisione di non disponibile metri)
- Sei non disponibile° dal vero nord
- Ti stai muovendo alla velocità di non disponibile° metri / secondo
- Dati aggiornati a non disponibile
Login
Demo creato da Aurelio De Rosa (@AurelioDeRosa)
In questo articolo abbiamo imparato a conoscere l'API di geolocalizzazione. Abbiamo visto di cosa si tratta, come usarlo e quando usarlo.
L'API di geolocalizzazione è uno strumento utile per migliorare l'esperienza dell'utente e può servire a molti scopi. Il supporto è ampio, ma non dimenticare che le versioni precedenti di Internet Explorer non lo supportano.
Come discusso in questo articolo, dovresti sapere che alcuni dati sulla posizione, come ad esempio velocità
, altitudine
, e intestazione
, non sono sempre disponibili Ricorda inoltre di utilizzare con attenzione l'API di geolocalizzazione, poiché richiede una notevole carica della batteria, soprattutto su dispositivi mobili dotati di chip GPS.