Geocoding Esempio di codice PHP geolocalizzazione con Google Maps

Questo articolo illustra un esempio di geocodifica, Geocoding di codice PHP con Google Maps. Nell’esempio oltre a PHP ci sono delle rourine JavaScript di Google Maps per mostrare i dati geografici sulla mappa.

Ci siamo occupati di geolocalizzazione e dei relativi servizi in un precedente articolo. Ci occuperemo adesso di costruire un esempio pratico che sfrutta questi servizi di Geolocalizzazione, ognuna delle piattaforme come Google, rilascia delle API KEY che colloquiando con i Server attivi restituiranno informazioni utili legati alle coordinate geografiche. E’ possibile usare questo codice se vuoi creare un localizzatore per attivita commerciali, delimitare delle zone di intervento o da monitorare, o per altri utilizzi. Con questo esempio di Geocoding inserisci gli indirizzi e Google identificherà la posizione approssimativa, o la più vicina, a tale indirizzo.

1. Creazione della pagina principale index.php

<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="Geocoding">
<meta name="keywords" content="Geocoding, google map, maps, Geolocalizzazione">
<meta name="author" content="Rosario Ciaglia">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Google Maps Geocoding Esempio di codice PHP</title>
<style>
/* css */
#gmap_canvas{
width:80%;
height:30em;
}
</style>
</head>
<body>

</body>
</html>

2. Creazione del form per inserire l’indirizzo. I tag vanno inseriti tra <body></body>

<form action="" method="post">
<input type='text' name='address' placeholder='Inserisci un Indirizzo' />
<input type='submit' value='Visualizza Mappa' />
</form>

3. La funzione geocode()

Innanzitutto per rendere completamente funzionante lo script dovete richiedere la chiave API_KEY per il Geocoding di Google Maps. Chiedete la API_KEY al seguente indirizzo. Inserisci in corrispondenza del testo TUA_API_KEY la tua chiave API per il Geocoding di Google Maps. Attenzione a non inserire restrizioni e limitazioni alla tua chiave API in modo che funzioni correttamente.

<?php
function geocode($address){
// url encode per l'indirizzo
$address = urlencode($address);
// google map geocode api url
$url = "https://maps.googleapis.com/maps/api
/geocode/json?address={$address}&key=TUA_API_KEY";
// Acquisisce i risultati json
$resp_json = file_get_contents($url);
// decodifica json
$resp = json_decode($resp_json, true);
// Restituiscee 'OK', se c'è un indirizzo geocodificato
if($resp['status']=='OK'){
// Raccoglie i dati fondamentali per la visualizzazione della mappa
$lati = isset($resp['results'][0]['geometry']['location']['lat']) ? 
$resp['results'][0]['geometry']['location']['lat'] : "";
$longi = isset($resp['results'][0]['geometry']['location']['lng']) ? 
$resp['results'][0]['geometry']['location']['lng'] : "";
$formatted_address = isset($resp['results'][0]['formatted_address']) ? 
$resp['results'][0]['formatted_address'] : "";
// Verifica della completezza dei dati
if($lati && $longi && $formatted_address) {
// Inserisce i dati in un Array
$data_arr = array();
array_push($data_arr, $lati, $longi, $formatted_address);
return $data_arr;
} else {
return false;
}
} else {
echo "<strong>ERRORE: {$resp['status']}</strong>";
return false;
   }
}
?>

4. Gestione del metodo “action” attributo del form per la verifica dell’indirizzo

Anche in questo caso dovete inserire la chiave API_KEY per il Geocoding di Google Maps. Se non lo avete fatto chiedete la API_KEY al seguente indirizzo. Inserisci in corrispondenza del testo TUA_API_KEY la tua chiave API per il Geocoding di Google Maps. Attenzione a non inserire restrizioni e limitazioni alla tua chiave API in modo che funzioni correttamente.

<?php
if($_POST){
// Ricevo latitudine e longitudine passandop una stringa indirizzo
$data_arr = geocode($_POST['address']);
// Se esiste la geocodifica dell'indirizzo
if($data_arr){
$latitude = $data_arr[0];
$longitude = $data_arr[1];
$formatted_address = $data_arr[2];
?>
<!-- Visualizza Google Map -->
<div id="gmap_canvas">Caricamento della mappa ...</div>
<div id='map-label'>Mappa completa di indirizzo</div>
<!-- JavaScript Mostra Google Map -->
<script type="text/javascript" src="https://maps.google.com/
maps/api/js?key=TUA_API_KEY"></script>
<script type="text/javascript">
function init_map() {
var myOptions = {
zoom: 14,
center: new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("gmap_canvas"), myOptions);
marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(<?php echo $latitude; ?>, <?php echo $longitude; ?>)
});
infowindow = new google.maps.InfoWindow({
content: "<?php echo $formatted_address; ?>"
});
google.maps.event.addListener(marker, "click", function () {
infowindow.open(map, marker);
});
infowindow.open(map, marker);
}
google.maps.event.addDomListener(window, 'load', init_map);
</script>

<?php
// Se l'ndirizzo inserito non è geolocalizzato'
}else{
echo "Non è stata trovata nessuna mappa!";
}
}
?>

Abbiamo visto in questo articolo Geocoding Esempio di codice PHP geolocalizzazione con Google Maps. Dobbiamo sottolineare che Google vi chiedera di registrare un account Developer su Google Maop Platform, vi chiedera anche i dati di una carta di credito e, infine, vi inviera una API KEY che con delle limitazioni. Gratis fino a poche richieste e a pagamento con piani personalizzati.