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 😉
15 risposte su “Ottenere Longitudine E Latidudine Di Un Indirizzo In PHP Con Le Google MAPS API”
Ciao Davide complimenti per il blog…capisco che il post e’ abbastanza vecchio ma spero tu mi risponda ugualmente.
Ho una mappa di Milano integrata nel mio sito su cui vorrei posizionare dei ‘pin’ ad una serie di indirizzi conservati nel mio db …hai idea di come su come debba agire?
Grazie!
[…] viaOttenere Longitudine E Latidudine Di Un Indirizzo In PHP Con Le Google MAPS API. Scarica l'articolo in formato PDF […]
I comandi della libreria curl sono necessari? Non riesco ad istallarla!
Purtroppo si 🙁
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