
Tag: Programmazione, Geolocazione, PHP, Internet, API.Visto 1215 volte.
Nonostante l'uso sempre più massivo del servizio di Google per quanto riguarda le mappe all'interno di siti e di applicazioni, non tutti conoscono il servizio di Geocoding di Google, che permette di trasformare un indirizzo esteso in coordinate geografiche correttamente interpretabili dal servizio Google Maps.
Attraverso questo servizio si può finalmente evitare di compilare i dati di latitudine e longitudine del punto che si vuole tracciare sulla mappa, ma basta l'indirizzo "human readable" per posizionare un marker sulla mappa.
Il servizio API di Geocoding è molto semplice da implementare in qualsiasi linguaggio. Si tratta di un semplice servizio API REST che, a fronte di una richiesta HTTP GET con i corretti paramentri, ritorna una struttura dati sotto forma di oggetto JSON o XML.
Questi dati risultano facilmente processabili per estrarre le nostre coordinate da utilizzare nella fase successiva di creazione della mappa.
Cliccando sul tipo di output potete vedere un esempio di output JSON o XML.
Avendo sviluppato un modulo PHP per la trasformazione di questi indirizzi estesi in coordinate geografiche, vi riproponiamo la classe e un esempio di utilizzo di seguito.
Code:
// Classe di Geocoding
class geocoding
{
private $endpoint;
private $output;
public function __construct()
{
$this->endpoint = "https://maps.googleapis.com/maps/api/geocode/";
$this->setOutput("json");
}
public function setOutput($out)
{
$type = array("json","xml");
// $type[0] is default value
if(in_array($out,$type))
$this->output = $out;
else
$this->output = $type[0];
}
public function resolveAddress($address)
{
$url = $this->endpoint.$this->output."?address=".urlencode($address)."&sensor=false";
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($c);
curl_close($c);
$res = json_decode($res);
if($res->status == "OK")
{
$tmp = $res->results[0]->geometry->location;
$ret['lat'] = $tmp->lat;
$ret['lng'] = $tmp->lng;
return $ret;
}
else
{
return NULL;
}
}
}
?>
<?php
// Script di test della classe Geocoding
$g = new geocoding();
$data = $g->resolveAddress("Garibaldi F.s., Piazza Sigmund Freud, Milano");
?>
Come potete vedere dal codice del metodo "resolveAddress", la nostra classe processa la risposta per ritornare alla variabile "$data" dell'esempio un array contenente solo le variabili lat e lng, che sono i dati che effettivante servono alla costruzione della mappa.
Attenzione: ricordiamo che negli script che utilizzano la classe di Geocoding è necessario gestire il
Code:
che avviene nel caso in cui il servizio non sia in grado di darci risposte valide.
Per ogni altro approfondimento in merito al servizio di Google Geocoding vi rimandiamo alla pagina di descrizioni delle API cliccando quì.
Buona programmazione a tutti.
Tags
API Apache Bash Elastix Firewall Firma digitale Geolocazione Grafica Informatica Internet Java Linux Motori di ricerca OpenMoko PHP Programmazione Python Reti Ricetta SEO Sicurezza Sistemi Operativi Varie Virtualization Virtualizzazione VoIP kvm
Blog CodiceASbarre.Net di CodiceASbarre.Net sotto licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia License.
Lavoro basato su www.codiceasbarre.net.
Ulteriori permessi in merito questa licenza possono essere richiesti a info@codiceasbarre.net.
Link ad altri blog:

seguendo l'esempio, la variabile $data è un array associativo che ha come chiavi "lat" e "lng".
Per stamparle in una pagina puoi usare questa riga di codice:
<?php echo "LAT: ".$data['lat']." - LNG: ".$data['lng']."<br />"; ?>
Spero sia tutto chiaro.