Geolocalizzazione indirizzo IP

Dopo aver visto, nel precedente articolo, l’uso delle API W3C e HTML5 per geo-localizzare un device, vediamo cosa succede in quei browsers che non supportano la geo-localizzazione HTML5. In questo caso è necessario utilizzare l’indirizzo IP del client per localizzare il dispositivo, per cui dobbiamo utilizzare un servizio di localizzazione esterna con i conseguenti svantaggi:
-Gli indirizzi possono essere associati ad una ampia area geografica (ad esempio, una grande città, o uno stato). Molti indirizzi sono associati solo alla città, e non con la posizione di latitudine / longitudine.
-Alcuni indirizzi non sono censiti nel database e quindi non possono essere mappati (di solito IP non comunemente utilizzati su Internet).
-Gli indirizzi IP possono essere associati ad una posizione sbagliata.
La cosa da ricordare è che quando si utilizza un servizio di geo-localizzazione esterna, la precisione lascia qualche dubbio rispetto a quella nativa del dispositivo. Inoltre, tali servizi non forniscono informazioni riguardanti l’altitudine, la velocità, lo spostamento. Questi servizi sono comunque un buon ripiego, quando il GPS o la triangolazione non sono disponibili.

YQL Geo Library è una libreria dedicata e leggera che consente di eseguire la geo-localizzazione attraverso i servizi di Yahoo.
Vediamo quindi come dovremmo modificare il nostro codice per rilevare correttamente la posizione su entrambi i browser che supportano e/o non supportano la geo-localizzazione:
Innanzitutto aggiungiamo il riferimento alla libreria

quindi il nostro codice diventerà:

All’interno della funzione initiate_geolocation (), il codice controlla che geo-localizzazione nativa sia supportata. Altrimenti utilizza la libreria YQL.
Abbiamo poi definito la funzione normalize_yql_response (response) per ottenere il risultato della geo-localizzazione della libreria YQL in un formato di output simile alle specifiche W3C API.

Integrare GoogleMap nella geo-localizzazione

Finora siamo stati in grado di recuperare le coordinate di latitudine e longitudine del dispositivo. Dobbiamo adesso convertire queste coordinate in una forma più naturale per gli utenti. Una mappa. Facciamo visualizzare la mappa della posizione corrente, utilizzando Google Static Map API ecco la sezione di codice:

Con l’aiuto di jQuery, abbiamo modificato la funzione handle_geolocation_query (position) per creare un elemento immagine e aggiungerlo alla pagina. L’attributo src dell’elemento immagine è impostata su un URI costruito che Google Static Map API utilizzerà per generare una immagine mappa.
Nel precedente articolo abbiamo visto come funziona API GetCurrentPosition. Vediamo rapidamente le API watchPosition. Quando viene chiamato, deve restituire e quindi avviare in modo asincrono un processo watch definito dai seguenti passaggi:

Acquisire un nuovo oggetto di posizione. In caso di successo, richiamare il successCallback associato con un oggetto di posizione come argomento. Se il tentativo fallisce, e il metodo è stato richiamato con un argomento errorCallback non nullo, questo metodo deve richiamare errorCallback con oggetto PositionError come argomento.
Richiamare il callback con un nuovo oggetto posizione ogni volta che viene determinato che la posizione del dispositivo è cambiata.
Questo metodo restituisce un valore intero che identifica in modo univoco il processo di watchPosition. Quando la funzione clearWatch () viene chiamato con questo identificativo, il processo deve fermare l’acquisizione di tutte le nuove posizioni e deve terminare invocando eventuali callback.
In altre parole questa API consente al nostro codice di ricevere informazioni sulla posizione più volte anche se cambia la posizione del device. Vediamo come integrare il nostro codice:
– Aggiungiamo un nuovo pulsante che permette di fermare il processo di localizzazione, e una variabile

Per avviare il processo dobbiamo aggiungere il codice che chiama l’API watchPosition () :

Per fermare il processo che dobbiamo aggiungere il codice che chiama l’API clearWatch ()

Infine, gestiamo la visualizzazione della mappa e dei dati aggiuntivi (ad esempio posizione, precisione) :

Qui una demo con googleMap dinamico geo location

Conclusione

Spero che questo tutorial vi sia utile nei vostri progetti di geo-localizzazione.

Sergio

Sergio

Analista Programmatore: C++ - Net C# - JAVA - Python - Php - Objective C Xamarin cross plattform iOS, Android, Windows and Mac. Certificazioni [candidate ID SR2210816] - IBM Certified Business Process Analyst - IBM WebSphere Integration Developer V6.1 - IBM Certified SOA Solution Designer [2007] - IBM Lotus Notes & Domino Technical Sales Professional v2 - IBM Lotus Sametime Unified Telephony Entry Technical Sales -IBM Certified Deployment Professional - Tivoli Compliance Insight Manager V8.5 -IBM Optim Implementation for Distributed Systems (2009) Professional Test v1
Sergio