L'ultimo articolo scritto su Sir Bit risale a marzo 2014. La versione che state visitando è un archivio: le pagine sono accessibili come sempre e gli autori potrebbero rispondere ai commenti, ma non saranno inseriti dei nuovi articoli. Visita questa pagina per i dettagli.

Google Maps – Recuperare latitutine e longitudine passando l’indirizzo

Qualche mese fa abbiamo visto un esempio complesso su come trasformare un indirizzo civico passato in coordinate geografiche (latitudine e longitudine), attraverso l’uso di api di Google Maps e in particolare del geocode.

In quel caso si trattava di un esempio completo, con delle aggiunte, ma Google ci mette a disposizione uno script molto più semplice per ricavare latitudine, longitudine e altitudine da un indirizzo passato.

Di seguito vi propongo uno script, liberamente scaricabile, che permette di ricavare le coordinate dall’indirizzo passato. Funziona da solo senza aggiunte: questo significa che potrete metterlo online sul vostro sito e richiamarlo come una comune pagina php.
Il codice stampa a video le coordinate. Per interazioni più complesse (per esempio, salvataggio delle coordinate nel database) potete dare un’occhiata al link che trovate in fondo all’articolo.

Il codice non ha bisogno di grandi spiegazioni e i commenti dovrebbero essere sufficienti per capirne la dinamica.
Vi basterà cambiare soltanto l’indirizzo di partenza, contenuto nella variabile address.

Download script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
//Inizializza il ritardo nella velocità del geocode
$delay=0;
$base_url="http://maps.google.com/maps/geo?output=xml&key=abcdefg";

$geocode_pending=true;

while($geocode_pending){

	//Questa è l'unica variabile da modificare: scrivere qui l'indirizzo civico
	$address="Via dietro Anfiteatro, 37121 Verona";

	$id=1;
	$request_url=$base_url."&q=".urlencode($address);
	$xml=simplexml_load_file($request_url) or die("url non caricato");

	$status=$xml->Response->Status->code;

	//Il geocode ha avuto successo
	if(strcmp($status, "200")==0){

		$geocode_pending=false;
		$coordinates=$xml->Response->Placemark->Point->coordinates;
		$coordinatesSplit=explode(",", $coordinates);

		// In ordine nell'array si trova: Longitude, Latitude, Altitude
		$lng=$coordinatesSplit[0];
		$lat=$coordinatesSplit[1];
		$alt=$coordinatesSplit[2];

		echo $lat." --- ".$lng." --- ".$alt;

	//Il geocode è sttato inviato troppo velocemente
	}elseif(strcmp($status, "620")==0){

		$delay+=100000;

	//Il geocode non ha avuto successo
	}else{

		$geocode_pending=false;
		echo "Address ".$address." failed to geocoded. ";
		echo "Received status ".$status."\n";

	}
	usleep($delay);

}
Fonti esterne

Geocoding Addresses with PHP/MySQL

Etichette
Etichette:, , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.