Programmazione

Gmaps Reverse Geocoding in PHP

By 9 marzo 2016 7 Comments

Per un progetto ho dovuto risolvere un problema poco noto, trovare l’indirizzo data la longitudine e la latitudine. Scrivo questo articolo per aiutare in maniera semplice chi si trova nella stessa situazione.

Per ora si tratta di un semplice codice da utilizzare che restituisce l’indirizzo di una certa coordinata. Utilizza Google Maps di base e PHP per avere il risultato (a differenza di javascript come indicato sulle linee guida di google).

Gli unici due dati necessari sono la latitudine e la longitudine (quindi una coordinata).

Il codice fa una richiesta alla API di google su XML (e non json) e restituisce la stringa formatted_address (cioè l’indirizzo reale), ovviamente il parametro restituito è modificabile a piacere.

// $lat e $lng sono le variabili che contengono latitudine e longitudine

$reverseurl = "http://maps.googleapis.com/maps/api/geocode/xml?latlng=".$lat.",".$lng."&sensor=false";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$reverseurl);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);

preg_match_all('/formatted_address\s?([^\]*)\s?formatted_address/isU', $result, $output_address_all, PREG_SET_ORDER);

$x = 1;

foreach($output_address_all as $address){
if($x==3){
$indirizzo = $address[0];
}
$x++;
}

La variabile $indirizzo sarà il nostro dato, che potremmo usare come vogliamo.

La variabile $x determina che indirizzo vogliamo ottenere (più o meno specifico) tra quelli del parametro formatted_address restituitoci:

$x == 1 –> indirizzo completo
$x == 2 –> cap città, provincia, stato
$x == 3 –> città, provincia, stato
$x == 4 –> provincia, stato
$x == 5 –> regione, stato
$x == 6 –> stato

NB: i 6 valori si riferiscono più o meno agli indirizzi italiani, negli altri stati possono risultare di più (conviene sempre fare delle prove) ma in linea di massima sono formattati così.

Per un idea sul Reverse Geocoding di Google visitate le API Gmaps, per conoscere la struttura dell’xml restituito visitate l’esempio xml di Gmaps (è un esempio su coordinate a caso).

Più avanti inserirò alcuni esempi pratici e maggiori specifiche, inoltre svilupperò un piccolo script utilizzabile da tutti che restituisce automaticamente il dato scelto senza dover inserire codice.

Per chi ha problemi o vuole maggiori informazioni, utilizzate i commenti a fine pagina!

Andrea Vigato

Author Andrea Vigato

freelance | creazione siti web | consulenza aziendale

More posts by Andrea Vigato