HTML5 e la geolocalizzazione

Una delle novità introdotte in HTML5 è la GeoLocation, ovvero la possibilità di ottenere dal browser le informazioni sulla posizione geografica dell’utente.

Funzionamento

In breve, come funziona: lo standard (per cui vi rimando alla pagina del W3C)  prevede che il browser possa esporre le coordinate geografiche dell’utente fornitegli dal sistema operativo su cui è installato, qualora quest’ultimo consenta di determinare la posizione geografica mediante antenna GPS o WiFi.

Pertanto, affinché un’applicazione web ottenga la posizione geografica, è necessario che il sistema operativo ed il browser supportino tale funzionalità.

C’è da dire, inoltre, che la richiesta della posizione geografica, da parte dell’applicazione web in questione, è sempre preceduta da una richieste esplicita fatta all’utente pertanto, sulla questione privacy, è l’utente a dover accettare esplicitamente di voler fornire al browser questo dato.

Sul discorso compatibilità dei browser: Safari e Chrome supportano pienamente le API per questa funzionalità (aggiunta di recente al draft di HTML5), altri browser potrebbero supportarla, magari con l’utilizzo di Modernizr , sull’uso di alcune istruzioni del CSS3) per cui vi rimando su diveintohtml5 (sito dalla grafica molto grunge ma pieno di spunti per avvicinarsi all’HTML5).

In realtà eseguendo l’esempio che riporterò a breve, potrete verificare direttamente se la vostra versione del browser supporta la geolocalizzazione.

Come utilizzarlo

Ma tornando sul pezzo: come facciamo ad utilizzare le api di HTML5 relative alla geolocation ?

Premesso che per le API applicative HTML5 richiedono l’uso di Javascript, per verificare la compatibilità del vostro browser relativamente a geolocation basterà inserire in una pagina il seguente script:

[sourcecode language=’js’]

[/sourcecode]

In questo esempio memorizzo in due variabili globali (latitudine e longitudine) i rispettivi valori mediante una callback.

Le API di GeoLocation non si limitano alla latitudine ed alla longitudine – nel momento in cui vi scrivo, infatti, sono previste le seguenti proprietà:

  • latitude
  • longitude
  • altitude (optional)
  • accuracy
  • altitudeAccuracy (optional)
  • heading (optional)
  • speed (optional)
  • timestamp

L’accuracy, ad esempio, si rivela molto utile per stimare il grado di precisione della lettura dei parametri latitudine e longitudine: se pensate di integrare sulla vostra web app la geolocalizzazione, con l’accuracy, ad esempio sarebbe utile riportare tale valore dato che, soprattutto in assenza di una antenna gps, la lettura della posizione potrebbe avere degli scarti anche dell’ordine di centinaia di metri.

Mentre scrivevo questo articolo mi sono, ovviamente, divertito a creare uno script leggermente più complesso, che visualizzi una Google Map con un marker sulla posizione rilevata dal browser.

Potete vedere qui lo script in azione 😉

Un dettaglio sul codice dell’esempio: nell’inclusione del javascript per la mappa di Google, ho disabilitato il sensor (che era un metodo alternativo di geolocalizzazione basato su Gears).

Inoltre, ho utilizzato tutti i parametri che è possibile passare alla funzione navigator.geolocation.getCurrentPosition:

  • la callback in caso di esito positivo della lettura della posizione
  • la funzione per l’esito negativo
  • l’array di opzioni (io ne ho inserite due: timeout della richiesta e flag sull’accuratezza della lettura)

Considerazioni

Non vi nascondo che sono sempre stato scettico sul fornire ad una web app la posizione geografica e, come me, gran parte degli utenti potrebbero avere delle remore a fornire queste informazioni durante la navigazione di un sito web.

In realtà esistono svariati contesti in cui la geolocation si rivela molto utile e, secondo me, è in quegli ambiti che può trovare applicazione:

Come raggiungerci

Pensate ad esempio alla classica pagina “Dove siamo/Come raggiungerci” di siti relativi ad esercizi commerciali – leggendo la posizione dell’utente gli si può presentare una mappa con il percorso per raggiungere in auto la vostra sede, cosa sicuramente più evoluta rispetto alla classica mappa.

Geotagging

Pensate a tutte le applicazioni di ugc (user generate content) dove pubblicare contenuti corredati di una posizione geografica può fare la differenza – geolocalizzare il contenuto o l’azione di pubblicazione del contenuto consente di sviluppare web app come quelle di Flickr e Twitter che basano alcune delle loro funzionalità sulla posizione geografica dei contenuti e che in questo caso verrebbero valorizzate senza ulteriore intervento da parte dell’utente.

Around me

Citando il nome di una famosissima app su iPhone, sfruttando la posizione geografica si potrebbero suggerire contenuti, servizi, esercizi commerciali e tutto quanto ci viene in mente, da quelli più vicini alla posizione dell’utente.

…provate a immaginare il tipo di applicazioni che potremo sviluppare quando a questa funzionalità si va ad aggiungere la ricerca semantica dei contenuti: potrei, ad esempio, cercare il negozio più vicino che vende un libro con un dato codice ISBN!!!

…incredibile, no ?! 🙂