Ottenere Longitudine E Latidudine Di Un Indirizzo In PHP Con Le Google MAPS API

scritto da Davide Salerno30 maggio 2008

in Programmazione, Tecnologia

A meno che non viviate sul cucuzzolo di una montagna e siate completamente all’asciutto di Web 2.0 & Co, conoscerete benissimo Google Maps, il servizio di mappe geografiche di che copra gran parte del Terra, che sicuramente utilizzerete quotidianamente per orientarvi nei vostri frenetici spostamenti. Come ogni servizio 2.0 che si rispetti anche Google Maps mette a disposizione una serie di API per aiutare gli sviluppatori web ad integrare le sue funzionalità all’interno delle loro realizzazioni. Uno degli utilizzi più comuni delle Google Maps API credo sia il Geocoding di un indirizzo.

Che cos’è il Geocoding?

Innanzitutto per Geocoding si intende quel processo che assegna ad un indirizzo le sue coordinate geografiche logitudine e latitudine: in sostanza è quel procedimento che va ad associare all’indirizzo “via Durini, 24 20122 Milano” le coordinate “longitudine:45.464919 latitudine: 9.198268″ Potete farlo manualmente andando a prendere un atlante, uno stradario, una piantina o un qualsiasi altro strumento che vi pertmetta di ottenere queste coordinate una volta localizzato l’indirizzo che vi interessa geolocalizzare, oppure potete farlo molto più comodamente utilizzando per l’appunto le Google Maps API che faranno tutto ciò per voi e vi restituiranno longitudine e latitudine dell’indirizzo in questione.

In quali casi servono Longitudine e Latitudine?

Se siete degli sviluppatori web o comunque vi piace trafficare nella rete sporcandovi le mani con codice di vario genere, saprete benessimo che un’ottima soluzione per interagire con le API offerte dai vari servizi di Google è quella di utilizzare le Google AJAX API Loader che non sono altro che un framework già preconfezionato per interagire comodamente con la stragrande maggioranza delle applicazioni web 2.0 offerte dall’azienda di Mountanin View. Se volete sfruttare le Google AJAX API Loader per interagire con le Google MAPS magari perchè volete visualizzare all’interno della vostra applicazione web 2.0 la mappa corrispondente a ciascun indirizzo geografico del tipo “via Durini, 24 20122 Milano”, avrete bisogno di avere la longitudine e la latitudine di ciascun indirizzo da mandare in pasto successivamente alle Google AJAX API Loader. Quando gli indirizzi da geolocalizzare diventano tanti ecco che una procedura automatizzata per avere le corrispondenti longitudini e latitudine in modo automatizzato è molto comoda.

ll codice

Dopo aver capito che cosa stiamo facendo e perchè lo stiamo capendo è finalmente venuto il momento di sporcarsi le mani con il codice PHP che tutto sommato è abbastanza semplice. Ovviamente prima di effettuare qualsiasi cosa, se non la possedete già, dovrete procurarvi una Google MAPS API Key. Ora che abbiamo tutto il necessario, ecco il codice da salvare in un file .php e da eseguire per avere la geolocalizzazione di un indirizzo.

Per eseguire lo script in PHP dovrete aver installato curl sul vostro server e dovrete averlo abilitato per essere utilizzato da PHP. Ovviamente se si hanno tanti indirizzi da geocodificare bisognerà andarli a prendere dal database e successivamente bisognerà andare a memorizzare longitudine e latitudine associati a ciascun record ma ho omesso questa parte perchè banale e perchè le possibilità sono davvero molteplici (dal file di testo a quello XML al più comune database in SQL
<?php
$key
= "Inserisci qui la tua chiave API";
//Set up our variables
$longitude = "";
$latitude = "";
$precision = "";
//Three parts to the querystring: q is address, output is the format (
$address_to_encode="via Durini, 24 20122 Milano"
$address = urlencode($address_to_encode);
$url = "http://maps.google.com/maps/geo?q=".$address."&output=csv&key=".$key;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
//echo "Data: ". $data."";
if (strstr($data,'200')){
$data = explode(",",$data);
$precision = $data[1];
$latitude = $data[2];
$longitude = $data[3];
echo
"n: ".$count." Latitude: ".$latitude."";
echo
" Longitude: ".$longitude."\r\n";
} else {
echo
"Error in geocoding!";
}
?>

Ecco quanto: come al solito per chiarimenti, correzioni e quant’altro ci sono i commenti qua sotto che vi aspettano ;-)

ArticoliTi è piaciuto l'articolo? Condividilo sui vari Social Network o via e-mail
Rimani sempre aggiornato abbonandoti ai miei feed RSS o iscrivendoti alla newsletter.

  • Share/Bookmark

Forse collegati:

{ 2 trackback }

RSS Week #5: articoli interessanti che ho trascurato - Matteo Moro
5 giugno 2008 alle 19:38
Ottenere longitudine e latidudine di un indirizzo in PHP con le Google Maps API : phpblog.it
6 giugno 2008 alle 09:41

{ 11 commenti… Leggili qui sotto o aggiungine uno }

1 Anna 29 maggio 2009 alle 05:20

I comandi della libreria curl sono necessari? Non riesco ad istallarla!

Replica

2 Davide Salerno 29 maggio 2009 alle 18:42

Purtroppo si :-(

Replica

3 fabio 2 aprile 2009 alle 21:31

Io volevo chiedere invece la cosa inversa, io già posseggo le coordinate del gps e volevo risalire all’indirizzo. E’ possibile questa cosa?

grazie

fabio

Replica

4 Matteo 30 marzo 2009 alle 17:48

Ciao!
Ho un problema con il processo di Geocoding, spero possiate aiutarmi a risolverlo.
Devo recuperare le coordinate di alcuni luoghi, ma in questi indirizzi ci sono dei numeri romani.
Provando ad andare su maps.google ed inserendo ad esempio “Piacenza Via XX Settembre” non viene restituito nessun risultato. Al contrario inserendo “Piacenza via 20 Settembre” mostra appunto la via.
Sapete se c’è un modo per evitare di dover sostituire i numeri romani nel processo di geocoding?

Grazie mille
Matteo

Replica

5 Davide Salerno 10 giugno 2008 alle 14:01

Isaac io non porto sfiga… ne capisco semplicemente di calcio.
;-)

Replica

6 isaac ads 9 giugno 2008 alle 23:31

nn centra con il post… porti troppa sfiga, smettila! Italia olanda 0-3 scometti anche sulla prossima è dura indovinarne 2 di fila!!

Replica

7 Davide Salerno 8 giugno 2008 alle 12:25

Nico per ricalire dall’indirizzo IP alla nazionalità dello stesso ci sono decine di servizi che fanno tutto questo da anni e non c’è bisogno di scomodare le Google MAPS API.

Uno su tutti http://ws.arin.net/whois/

Replica

8 nico 7 giugno 2008 alle 21:01

sul blog di msn viene visualizzato l’ip, con questa procedura si riesce a risalire alle coordinate?

Replica

9 k8 6 giugno 2008 alle 23:55

ok, mi informerò ;)

Replica

10 Davide Salerno 6 giugno 2008 alle 20:47

K8 non so se le Google Maps API ti fanno la geolocalizzazione dell’indirizzo IP. Se te lo fanno ovviamente si può benissimo fare lo script.

;-)

Replica

11 k8 6 giugno 2008 alle 14:57

Ciao,
quindi si potrebbe fare anche uno script che rilevi la nazione tramite un ip?

Replica

Lascia un commento

Puoi usare queste tag e questi attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Articolo precedente:

Articolo successivo: