Un'introduzione all'API di geolocalizzazione

introduzione

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.

1. Che cos'è?

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.

2. Implementazione

Precisione

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.

vita privata

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).

API

L'API espone tre metodi che appartengono al window.navigator.geolocation oggetto. I metodi forniti sono:

  • getCurrentPosition
  • watchPosition
  • clearWatch

Rilevazione del supporto

Come molte altre API, rilevare se il browser del dispositivo supporta l'API di geolocalizzazione è molto semplice. Dai uno sguardo al seguente snippet in cui rileviamo il supporto per l'API di geolocalizzazione.
if (window.navigator && window.navigator.geolocation) // Posso guardarti ovunque tu vada ... else // Not supported

Individuazione del dispositivo

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 getCurrentPositionwatchPosition 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.

  1. 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.
  2. 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.
  3. 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); 

Interrompe la posizione di monitoraggio

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.

Informazioni sulla posizione

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, precisionealtitudeAccuracy, intestazione, e velocità.

La maggior parte dei browser desktop non restituirà un valore per altitudinealtitudeAccuracyintestazione, 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.

Supporto del browser

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:

  • Firefox 3.5+
  • Chrome 5.0+
  • Safari 5.0+
  • Opera 10.60+
  • Internet Explorer 9.0+

Il supporto nei browser per dispositivi mobili è ancora migliore, come puoi vedere in questo riepilogo:

  • Android 2.0+
  • iPhone 3.0+
  • Opera Mobile 10.1+
  • Symbian (S60 terza e quinta generazione)
  • Blackberry OS 6

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.

dimostrazione

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 supportata

Informazione

  • 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)

Conclusione

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.