Reverse Geocoding in Google Maps
venerdì 14 novembre 2008Google ha recentemente introdotto il reverse Geocoding all'interno delle API di Google Maps. Ne avevo parlato qualche tempo fa, e ora è giunto il momento di giocare con un esempietto...
Sono partito da questo esempio tratto dalla documentazione e da una richiesta fatta da Federico qui: poter ricavare un URL preciso (da passare agli amici ad esempio) semplicemente cliccado sulla mappa.
Vediamo un po' di codice.
Per prima cosa creiamo la Google Maps con il suo bel geocoder e qualche controllo.
var geocoder = null;
var map = null
function load()
{
if (GBrowserIsCompatible())
{
// Dichiaro la mappa
map = new GMap2(document.getElementById("map"));
// Imposto centro su Roma (LAT 41.90, LONG 12.49)
map.setCenter(new GLatLng(41.90, 12.49), 16);
// Visualizza controlli - TIPO MAPPA
map.addControl(new GMapTypeControl());
// Visualizza controlli - ZOOM GRANDE
map.addControl(new GLargeMapControl());
// Inizializzo geocoder
geocoder = new GClientGeocoder();
// Al click sulla mappa eseguo reverseGeocode
GEvent.addListener(map, "click", reverseGeocode);
}
}
La funzione reverseGeocode() si occuperà di richiedere l'indirizzo al server di Google passando le coordinate del punto che abbiamo cliccato sulla mappa.
function reverseGeocode(overlay, latlng)
{
// Se riesco a recuperare il punto in cui ho cliccato
if (latlng)
{
geocoder.getLocations(latlng, function(addresses) {
if(addresses.Status.code != G_GEO_SUCCESS)
{
alert("Impossibile recuperare l'indirizzo per il punto cliccato");
}
else
{
// Creo l'oggetto address
address = addresses.Placemark[0];
// Recupero la stringa dell'indirizzo
var myHtml = address.address;
// Apro alert contenente l'indirizzo e un link a maps.google.it
map.openInfoWindow(latlng, myHtml + "<br /><br /><a target=\"_blank\" href=\"http://maps.google.it/?q=" + myHtml + "\">LINK!</a>");
}
});
}
}
Al click, come è facile intuire, creeremo un infoWindow sulla mappa che conterrà l'indirizzo cliccato e un link a maps.google.it completo di indirizzo.
Provare per credere (l'esempio è centrato sulla città di Roma).
Per il codice completo dell'esempio fate riferimento al file sorgente linkato poco sopra.
Buon divertimento!
In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.



















14 novembre 2008 alle 10:40
Interessante davvero sta funzione … mo sto cercando qualcosa che ti dica tramite la connessione dove ti trovi (più o meno ovviamente) tramite chiamate php, un gps in sostanza da implementare su meemi.
ma come al solito, grazie del piccolo tutorial
14 novembre 2008 alle 10:42
@ capobecchino:
Dicesi IP Geocoding…
Qualcosa si trova.
14 novembre 2008 alle 12:28
[...] ho letto sul blog di Napolux il suo articolo su reverse geocoding mi sono ricordato che avevo già modificato lo script add google maps per usarlo. In più ho [...]
14 novembre 2008 alle 14:32
@napolux: Lo dico che sei un genio ed un grande, con sempre la risposta giusta al momento giusto
14 novembre 2008 alle 14:34
@ capobecchino:
L’hai detto tu e per una volta condivido le tue affermazioni…
14 novembre 2008 alle 15:32
e lo confermo
6 maggio 2009 alle 17:33
Ciao!
Ho trovato molto interessante il tuo articolo.
Ma ho una questione assai dolente.
Esiste un modo per effettuare un reverse geocoding passando semplicemente coordinate gps e senza bisogno di effettuare un click sulla mappa.
Il motivo è molto semplice, vorrei sviluppare un applicazione per palmari, e farmi trasmettere le coordinate gps al server aziendale.
Da qui prendere le coordinate e, anche senza bisogno di un motore cartografico, sapere l’indirizzo.
Dici che è possibile??????
grazie