Se un tempo posizionare sulla mappa un utente era un'attività costosa sia in termini di tempo che di risorse (di calcolo ed economiche), HTML5 ha introdotto una serie di funzioni che in maniera molto semplice consentono di ottenere latitudine, longitudine più una serie di altre informazioni per ogni utente che visita le nostre pagine.

La funzione per accedere a questi dati è:

navigator.geolocation.getCurrentPosition(<br />        gotPosition,<br />        errorGettingPosition,<br />        {'enableHighAccuracy':true,'timeout':10000,'maximumAge':0}<br />    );

dove gotPosition è la funzioni di callback da chiamare quando i dati di geolocalizzazione vengono reperiti mentre errorGettingPosition è la funzione che viene eseguita quando si verifica un errore, mentre le altre opzioni servono per indicare una serie di parametri di configurazione quali il timeout o la massima accuratezza possibile.

La funzione gotPosition potrebbe dunque essere qualcosa di simile a:

function gotPosition(pos)  {<br />        var outputStr =<br />            "latitude:"+ pos.coords.latitude +"n"+<br />            "longitude:"+ pos.coords.longitude +"n"+<br />            "accuracy:"+ pos.coords.accuracy +"n"+<br />    <br />            "altitude:"+ pos.coords.altitude +"n"+<br />            "altitudeAccuracy:"+ pos.coords.altitudeAccuracy +"n"+<br />            "heading:"+ pos.coords.heading +"n"+<br />            "speed:"+ pos.coords.speed +"";<br />    <br />            alert(outputStr);<br />    }

ovvero una funzione che dall'oggetto pos mostra tutti i dati a disposizione, mentre la funzione di gestione degli errori potrebbe essere qualcosa di simile:

function errorGettingPosition(err) {<br />        if(err.code == 1) {<br />            alert("L'utente non ha autorizzato la geolocalizzazione");<br />        } else if(err.code == 2) {<br />            alert("Posizione non disponibile");<br />        } else if(err.code == 3) {<br />            alert("Timeout");<br />        } else {<br />            alert("ERRORE:" + err.message);<br />        }<br />    }

L'errore con codice numero 1 ("errore di autorizzazione") notiamo che il browser chiede all'utente se autorizzare l'utilizzo della geolocalizzazione – solo se l'autorizzazione viene concessa il nostro script ha accesso a questi dati.

Funzionamento (e un esempio)

Come avrete potuto notare, quando il browser riceve la richiesta della localizzazione geografica chiede per prima cosa all'utente se comunicare questi dati o meno: una volta che autorizziamo la comunicazione viene eseguita la funzione di callback (o quella di errore) e noi possiamo giocare come vogliamo con i dati ricevuti.

Qui sopra un esempio di utilizzo dove i dati, oltre a servire per posizionare un marker su Google Maps, vengono anche mostrati in forma testuale (il link all'esempio fuori dall'iframe – così potete dare un'occhiata anche al codice, con Google Maps V3, è http://html5today.it/labs/geolocation.html). Come potete osservare, nel caso di utilizzo delle API geolocation con un browser il campo "accuracy" è piuttosto casuale (indica l'accuratezza in metri… ma di solito viene un numero esagerato). Sicuramente è molto più affidabile per device mobili, su computer "fissi" l'accuratezza è solitamente piuttosto buona anche se, chiaramente, meno precisa che su telefoni e strumenti con GPS integrato.

Compatibilità e utilizzo

Le funzioni di geolocalizzazione sono ben supportate dalla maggior parte di browser attualmente in circolazione. Anzi, fondamentalmente da tutti i browser tranne quelli Microsoft – a quanto pare neanche da Internet Explorer 9 e Windows Phone 7. E vabbè.

Particolarmente interessante è il supporto da parte dei browser mobili (in particolare Webkit) che sono e dunque di dispositivi Android e iPhone: è sicuramente in ambito mobile, infatti, che queste funzionalità possono esprimere il loro massimo potenziale, consentendoci di ritagliare l'esperienza di navigazione e i dati forniti all'utente in base alla sua (quasi) esatta posizione geografica.

Per quanto riguarda le possibilità di utilizzo, sinceramente ci pare troppo bello avere a disposizione un sistema così semplice ed intuitivo per accedere alla geolocalizzazione di un utente: pensando a tutte le applicazioni mobile o semi-mobile (ad esempio per chi usa notebook e netbook in giro per bar e internet cafè) ci sembra ci sia solo l'imbarazzo della scelta…

The following two tabs change content below.
Silvio Porcellana
Silvio Porcellana è il fondatore di mob.is.it, il tool che centinaia di agenzie e professionisti di tutto il mondo utilizzano per creare con semplicità siti mobili e applicazioni native per i loro clienti. Tiene anche un podcast dove racconta ogni venerdì le sue avventure imprenditoriali, senza veli o segreti: Opus Digitalis