Usare il Geocoder di Google senza mappa

Forse non tutti lo sanno: è possibile utilizzare il geocoder di Google senza visualizzare la relativa mappa. Questo "giochetto" può tornare utile per diversi scopi: dalla popolazione di database alla compilazione di campi di moduli... L'unica limitazione è la nostra fantasia... :)

Vediamo in questo primo tutorial della serie (lanciata ormai quasi 2 mesi fa, mannaggia, come vola il tempo) come attivare il geocoder e utilizzarlo senza dover per forza visualizzare la nostra Google Maps.

Questa piccola introduzione presenterà la funzione geocode() che ci servirà (modificata o meno) in tutte le altre "lezioni".

Cosa ci serve per partire?

  • Un editor HTML (scegliete il vostro preferito)
  • Una Google Maps API Key (vale anche se inserite "localhost" come sito web)
  • Un browser (preferibilmente Firefox)

Partiamo: per prima cosa dobbiamo caricare gli script di supporto alle Google Maps. Funziona tutto come al solito: c'è una funzione load() da chiamare al caricamento della pagina e una funzione GUnload() che verrà chiamata all'uscita.

Troverete un esempio che vi fornisce un primo "setup" della pagina web da utilizzare quando richiederete la chiave API :)

var geocoder = null;
 
function load()
{
	if (GBrowserIsCompatible())
	{
		// Creo GeoCoder assegnandolo alla variabile globale
		geocoder = new GClientGeocoder();
	}
}

Notate la variabile var geocoder = null presente fuori dalla funzione. Lì finirà il nostro geocoder in attesa di richieste :P

La funzione che si occupa di interrogare il geocoder si chiama (viva la fantasia) geocode() e riceve come unico parametro l'indirizzo da codificare.

function geocode(indirizzo)
{
	var address = indirizzo + ", Italia";
	geocoder.getLatLng(address,
	function(point)
	{
		if (!point)
		{
			// Indirizzo non trovato
			alert(address + " non trovato!");
		}
		else
		{
			// Utilizzo i dati ricavati dal geocoder
			alert(address + "\n" +
                               "Longitudine: " + point.x + "\n" +
                               "Latitudine: " + point.y);
		}
	});
}

Cosa fa questa funzione? Riceve come parametro il nostro indirizzo (guardate i link dell'esempio per la corretta formattazione della stringa da passare), aggiunge alla stringa la parola "Italia" (altro aiuto per un corretto geocoding) e interroga il geocoder utilizzando la funzione getLatLng().

getLatLng() riceve due parametri: il primo è ovviamente l'indirizzo da ricercare, mentre il secondo è una funzione di callback (in questo caso ho utilizzato una funzione anonima, ma nulla vieta di usare una funzione dichiarata precedentemente) che si occuperà di gestire il punto ritornato.

Prevedete sempre un set di istruzioni che gestisca l'eventuale errore del geocoder: in questo caso viene lanciato un alert() che segnala che l'indirizzo non è stato trovato.

Se il punto è stato trovato ci viene restituito un oggetto point da cui possiamo ricavare le coordinate X e Y da utilizzare come più ci piace.

Qui il primo esempio della serie.

Se usate firebug (usatelo!) noterete che viene chiamata, al click sul link, la pagina http://maps.google.com/maps/geo?output=json (più qualche altro parametro, come l'indirizzo cercato e la chiave API utilizzata): ci tornerà utile più avanti.

Beh, per oggi basta, fate qualche esperimento (cambiando i link) e troverete che per ottenere il tasso più basso possibile di errori vi toccherà comporre l'indirizzo passato in questo modo:

indirizzo, comune, regione, nazione

Almeno, questo è quello che mi permette di codificare il maggior numero di indirizzi possibile senza troppi errori. Noterete anche che a volte il geocoder fa differenza tra le vie con nome composto da due parore (Via Giuseppe Garibaldi e Via Garibaldi, ad esempio) per alcuni indirizzi.

Occhio quindi, una verifica dei dati è sempre da fare!!!

Ci sono domande?

P.s.
Questa e le altre puntate (che seguiranno a brevissimo) saranno tutte raccolte in un "ebook" che troverete qui sul blog alla fine della serie

, , ,
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...
Condividi

Articoli che potrebbero interessarti

Arrivano, eh
Usare Google Maps - Seconda parte
Usare Google Maps - Prima parte
Usare Google Maps - Terza parte
TouchGraph, fatti la mappa dei link

5 Commenti per “Usare il Geocoder di Google senza mappa”

  1. MyAvatars 0.2 Gilberto ha detto:

    Bel post!
    grazie.

    Gilberto (alienoia)

  2. MyAvatars 0.2 Nicola B. ha detto:

    Molto,molto interessante! grazie!

  3. MyAvatars 0.2 k8 ha detto:

    Proprio ieri sera stavo guardando se era possibile effettuare la geolocation di un ip con googlemaps..
    Dici che è fattibile facilmente giusto?

  4. MyAvatars 0.2 Napolux ha detto:

    Geolocation di un IP? Ci sono servizi che già la offrono ma non ha molto senso IMHO. OK, magari la rete 123.143.X.X è “italiana” ma come fai a dirlo con certezza?

    Esistono servizi che si occupano prevalentemente di questo, aggiornando spesso le tabelle di corrispondenza tra IP e “geografia”.

    Ovviamente i servizi migliori sono a pagamento, ma mi era capitato di usare questo tempo fa, con risultati “decenti” anche se per l’Italia non è precisissimo…

    http://www.hostip.info/use.html

  5. MyAvatars 0.2 k8 ha detto:

    Mi serve per un gioco online,
    per non far usare agli utenti proxy o altri servizi simili.
    Naturalmente basta che mi identifichi che un ip sia italiano, non ho bisogno della città precisa ^^.
    Per quanto riguarda i servizi online,
    esatto adesso sto utilizzando alcuni di quelli, però non posso far sulle 3000 richieste al giorno con il solito ip(del mio server) perchè prima o poi mi negano il servizio, come alcuni hanno già fatto. :mrgreen:

    Idee?

Lascia un commento

Comments for this post will be closed on 21 January 2009.



Chiudi
Invia e-mail