Cerca nel blog

Pubblicità

banner-125x125 banner-125x125 banner-125x125 banner-125x125

Feed RSS e Newsletter

Puoi seguire il mio blog abbonandoti al feed RSS, se non sai cos'è un feed RSS prova a guardare questo video... Spiega tutto!

Icona Feed RSS

Twitter

PayPal

Se ti piace questo blog puoi pensare ad una donazione.

Tutti i fondi ricevuti saranno utilizzati per il mio sollazzo personale. :-)

Ultimi commenti...

VITO: Il sito dice che accetta pagamenti con carta di credito ,visa e mastercard……… ;….la...

Napolux: @ Davide Salerno: Domanda banale… Dopo i 20 anni IMHO si sfondano… ;)

Davide Salerno: Come sono le svedesi?

Napolux: @ VITO: In teoria non c’è bisogno di collegare la carta all’account, ma non lo so di preciso, ti...

VITO: Volevo chiedervi se è possibile effettuare pagamenti online con carta prepagata paypal, in siti dove accettano...

Usare Google Maps – Seconda parte

domenica 10 settembre 2006
1 Star2 Stars3 Stars4 Stars5 Stars (7 voti, media: 4,86)
Loading ... Loading ...

Come promesso rieccoci per la seconda parte del tutorial su Google Maps. La prima parte del tutorial è disponibile a questo indirizzo.

Oggi impareremo ad usare il GeoCoder, muovendoci sulla mappa a seconda dell'indirizzo inserito, e visualizzando un marker. Cliccando sul marker si aprirà un pop-up con l'indirizzo cercato.

DEFINIZIONE DI GEOCODING

Dicesi Geocoding il procedimento per cui si trasformano in coordinate geografiche (di solito Latitudine e Longitudine), indirizzi del tipo "Via, Numero Civico, Città". Un'interessantissima panoramica sul Geocoding è disponibile su Wikipedia.

IL GEOCODER DI GOOGLE MAPS

Esistono molti Geocoder, gratuiti o meno, e Google, dalla versione 2 delle API di Google Maps ha integrato un geocoder, che accetta 50.000 richieste / giorno, circa 1.6 al secondo, per ogni API KEY utilizzata.

Ovviamente non tutto il pianeta è coperto dal GeoCoder, gli USA sono, come si poteva immaginare, lo stato più coperto. Nel caso dell'Italia siamo abbastanza fortunati, ma si verifica ancora qualche errore non formattando correttamente gli indirizzi.

ATTIVARE IL GEOCODER

Per utilizzare il GeoCoder in Google Maps bisogna attivarlo. Per fare questo, creiamo una nuova variabile denominata geocoder, all'interno dello script relativo alla prima parte del tutorial.

Fatto questo creiamo il GeoCoder, assegnandolo alla variabile appena allocata all'interno della funzione load() la funzione che crea la mappa.

// Creo GeoCoder Max 1.6 query/sec
geocoder = new GClientGeocoder();

Niente di più facile. Ora dobbiamo però creare la funzione che interroghi il GeoCoder. Di un GeoCoder che non codifichi non ce ne facciamo nulla ;)

function showAddress(address)
{
geocoder.getLatLng(address,
function(point)
{
if (!point)
{
// Indirizzo non trovato!
alert(address + " non trovato!");
}
else
{
// Indirizzo trovato, centra la mappa sul punto
map.setCenter(point, 14);
 
// Crea il marker
map.addOverlay(createMarker(point, address));
}
});
}

Ora siamo pronti, e il nostro GeoCoder è pronto anche lui. Cosa abbiamo fatto? Nel primo script abbiamo creato l'oggetto GClientGeocoder, la documentazione delle API lo descrive molto meglio di quanto sappia fare io, a questo indirizzo.

La funzione showAddress() invece si occupa di interrogare il geocoder, attraverso JavaScript. Mi raccomando, prevedete SEMPRE l'eventualità che il GeoCoder non riesca a trovare l'indirizzo cercato, capita molto spesso per paesi che non siano gli Stati Uniti. In questo caso un alert() avvisa dell'errore.

Se l'indirizzo viene trovato la mappa viene spostata sul punto utilizzando il metodo map.setCenter(). Se non è necessario zoomare sulla mappa è possibile utilizzare anche il metodo panTo().

Viene in seguito creato un marker. Al click sul marker si aprirà un pop-up contenente l'indirizzo ricercato.

La funzione che crea il marker, createMarker(), riceve il punto ritornato dal GeoCoder, e crea il pop-up relativo al click sul marker. Il pop-up conterrà l'indirizzo cercato, ma potrebbe contenere un qualsiasi codice HTML.

Così facendo, per ogni ricerca effettuata verrà posizionato un marker. Se anche si arrivasse ad avere 100 markers sulla mappa (100 ricerche effettuate senza fare il refresh della pagina), un semplice click riporterà l'indirizzo esatto per ogni marker. Provare per credere.

// Crea il marker con la label passata come parametro
function createMarker(point, label)
{
// Variabile marker
var marker = new GMarker(point);
// Crea listener per il click sull'oggetto
GEvent.addListener(marker, "click", function()  	{
marker.openInfoWindowHtml(label);   	});
return marker;
}

IL MODULO

Ora che tutto è pronto dobbiamo poter passare a showAddress() la stringa che contiene l'indirizzo da "tradurre". Un semplice modulo fa al caso nostro. Non ci sarà una pagina che riceva le informazioni, quindi il submit() del modulo ritornerà un valore falso. Ci servirà anche più avanti.

CONCLUSIONI

Eccoci qua: a questo punto dovreste aver ottenuto una GoogleMaps che permette attraverso un modulo di poter ricercare un indirizzo: seconda parte.

Provate con query tipo "Milano, Italia", "Palermo, Italia", "Via L. da Vinci, Seregno, Milano, Italia", ecc...

Il codice come al solito è ben commentato e di facile lettura. Comunque, per qualsiasi chiarimento, dubbio o annotazione lasciate un commento, sono sempre ben accetti.

Il tutorial sarà disponibile in formato PDF appena concluso, comprenderà tutte le modifiche e i suggerimenti ricevuti.

Questo articolo è stato pubblicato domenica, 10 settembre 2006 alle ore 15:47 Se non vuoi perdere nemmeno un articolo del mio blog abbonati al feed RSS. Se non sai cos'è un feed RSS puoi guardare questo video, spiega tutto!

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.

  

29 Commenti a “Usare Google Maps – Seconda parte”

  1. timendum scrive:

    Se fai diventare il pulsante di tipo “submit” quando premo invio parte in automatico la ricerca, altrimenti devo usare il mouse oppure tab (e sono pigro :P )

  2. Napolux scrive:

    Modificato l’esempio. Io sono stato pigro a non voler modificare il submit… ;)

    Vale nel nostro caso quanto si legge qui: Why Good Programmers Are Lazy and Dumb

  3. Delfins scrive:

    Ottima anche la 2a parte del tutorial,ancora i miei complimenti

  4. Usare Google Maps - Terza parte :: Napolux.com scrive:

    [...] Eccoci qua. Prima di cominciare, a chi non lo avesse ancora fatto, consiglio di leggere le prime due parti di questo tutorial. Usare Google Maps – Prima parte Usare Google Maps – Seconda parte [...]

  5. A chi serviva il PDF? :: Napolux.com scrive:

    [...] Seconda parte [...]

  6. Usare markers personalizzati in Google Maps :: Napolux.com scrive:

    [...] Siccome i bravi programmatori devono essere pigri e stupidi, riciclo bellamente l’esempio relativo alla seconda parte del tutorial su Google Maps: in quell’esempio viene piazzato un marker dopo una ricerca indirizzo andata a buon fine. [...]

  7. alfredo scrive:

    ciao,avrei bisogno di un aiuto….
    di seguito viene riporta una porzione del codice da me utilizzato:

    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lngSpan = northEast.lng() – southWest.lng();
    var latSpan = northEast.lat() – southWest.lat();

    il problema e’ che vorrei memorizzare questi dati in un file in modo che possano essere utilizzati da un altro programma da me realizzato.
    E’ possibile fare una cosa del genere? Mi puoi dare qualke dritta?
    Grazie Alfredo

  8. Giacomo scrive:

    Ciao a tutti. E’ possibile ricavare l’indirizzo da un punto (praticamente l’operazione inversa a quella spiegata in questa guida)? Grazie

  9. Napolux scrive:

    @Giacomo
    http://www.google.it/search?q=reverse+geocoding

  10. Valerio scrive:

    ciao,ok ora ci sono.
    Solo una domandina : io voglio gestire un solo ndirizzo senza avere tabelle in mysql e php, come faccio a far comparire il marker solo con le coordinate che mi interessano?
    Grazie

  11. Napolux scrive:

    @Valerio
    Devi mettere il marker su un indirizzo preciso e basta? Guarda la 3a parte bis ;)

  12. Max scrive:

    Ciao a tutti. E’ possibile ricavare l’indirizzo da un punto (praticamente l’operazione inversa a quella spiegata in questa guida)? Grazie

  13. Napolux scrive:

    @Max
    Con Google Maps no. Potresti utilizzare uno dei tanti servizi di reverse geocoding. Ma per l’Italia non ce ne sono di precisi, anzi forse non ce ne sono proprio.

  14. Giacomo Ratta scrive:

    Ciao, ho seguito tempo fa i tuoi utilissimi tutorial sulle API di Google Maps. Per quanto riguarda il geocoder, a me serve il percorso inverso, ovvero, partendo dalle coordinate geografiche vorrei ottenere automaticamente indirizzo, numero civico, città, stato, ecc. Ti chiedo perchè non so più dove sbattere la testa…la guida di Google non accenna queste cose, e con i motori di ricerca non ho trovato molto. Ti sarei grato se mi potessi aiutare.

    Grazie, e complimenti per il blog

  15. Napolux scrive:

    Eh, purtroppo google non fornisce servizi di reverse geocoding. Quei pochi che lo fanno non sono così precisi come vorresti tu. Per l’Italia poi non c’è quasi nulla.

  16. Paso scrive:

    ciao Napolux e complimenti per blog e guida!
    Sto cercando di fare in modo che la richiesta di centrare sulla localita inviata sia in una pagina precedente a quella che contiene la mappa.

  17. Napolux scrive:

    Mai postare codice nei commenti, MAI!

    Piuttosto mandate un’email.

    Detto questo credo che tu debba far stampare il codice JS a PHP. Così puoi passare via GET tutte le variabili che vuoi da una pagina all’altra.

  18. Paso scrive:

    ok mi scuso

    riesco a passare con GET la variabile $citta alla pagina che contiene la mappa
    ma non so come indicare a js di usare il contenuto di questa variabile come centro

    conosco javascript molto poco, puoi aiutarmi?
    grazie
    paso

  19. Frank scrive:

    tutto perfetto, grazie Napolux.

  20. Marco Zairi scrive:

    Ciao mi spiegheresti al volo come creare un marker ogni volta che si clicca sulla mappa?non sono molto pratico di javascript, potresti illustrarmi brevemente? :neutral:

  21. Elisa scrive:

    E’ possibile effettuare la ricerca dell’indirizzo su una mappa creata da me nelle mie mappe di Google?

  22. Giorgio scrive:

    Ciao Napolux, ti contatto per chiederti un chiarimento se puoi concedermelo, e ti ringrazio già in anticipo. Innanzitutto, complimenti x i tutorial, ti dico solo che mi hai aiutato così tanto che li sto usando in un progetto di Sistemi Informativi alla mia facoltà di ing. informatica, e sono già a buon punto. Ma l’ unico dubbio che mi resta è all’ incirca quello che ha sollevato Paso il 21 ottobre 2007: devo passare la città con un link in un altra pagina, e a quel punto far partire nella pagina con la mappa la funzione showaddress con quella città; ho fatto diversi tentativi di codice, e ti assicuro che ho provato in tutti i modi, ma daltr’ onde nn conosco JS benissimo. Spero tu possa aiutarmi..te ne sarei davvero grato…

  23. Napolux scrive:

    Facile, aggiungi la chiamata alla funzione al codice JS della funzione load()… Puoi passare la città via GET e poi far stampare il codice necessario a PHP.

    Non mi dire che sei uno studente di ingegneria e vuoi la pappa bella e pronta, eh… :P

  24. Giorgio scrive:

    magari può sembrare che ho bisogno della pappa…tuttavia, ho provato anke nel modo come hai detto tu: ho già pronta la variabile passata con l’ url, e ho già provato a mettere la funzione in questione dentro la load(); ora, non so se posso metterti codice così come l’ ho scritto io (ho già notato cosè successo a Paso il 20 Ottobre 2007), quindi ti kiedo se fosse il caso di sentirci x email, magari per risolvere definitivamente sto problema che mi (ci) tartassa.
    Grazie ancora per la disponibilità oltre che alla prontezza della risposta.

  25. mauro scrive:

    ciao,
    ma come fai a verificare se l’indirizzo che hai inserito non è stato modificato. prova infatti a inserire via rma milano.. vedi che ti trova via roma milano. è possibile fare un controllo per informare l’utente che l’indirizzo cercato non è stato trovato, ma ne è stata trovata un’alternativa ??

  26. Napolux scrive:

    @ mauro:
    Le API da quel che mi è parso di capire non sono così “evolute” da dirti se l’indirizzo ritornato è suggerito o preciso al 100%.

    Quindi o ti torna un indirizzo (giusto o sbagliato, non lo sai) o non te lo torna.

  27. mauro scrive:

    ho trovato io comunue una soluzione “grezza”. faccio un confronto su cosa ho cercato e su cosa mi è tornato..

  28. AlpVir scrive:

    Ho lo stesso problema di”Alfredo” che il 2/4/07 scrive …
    “”vorrei memorizzare questi dati in un file in modo che possano essere utilizzati da un altro programma da me realizzato.”"
    In realtà avrei un archivio con una serie di indirizzi che vorrei convertire (tutti in una volta) in coordinate geografiche, da memorizzare nel medesimo archivio.
    Non vorrei essere costretto ad utilizzare il buon vecchio VB6 per :
    1) caricare nell’OCX (di cui mi sfugge il nome ma consente di visualizzare una pagina WEB in un form) una mappa con un marker sul primo indirizzo;
    2) fare il parsing del codice HTML di questa pagina fino a riconoscere la latitudine e la longitudine;
    3) memorizzare queste coordinate nel database
    4) passare al prossimo indirizzo.
    5) cosi fino alla fine di tutti gli indirizzi (anche se ci mette un’ora per me va bene)
    Grazie e …. complimenti

  29. buso scrive:

    ciao,
    ho letto la tua ottima guida ma volevo chiederti se è possibile far aprire la mappa (oltre al punto indicato) dei negozio o farmacie o scuole nelle vicinanze.
    per avere una mappa del tipo: tu sei qui e nelle vicinanze hai questo.

    googlemap lo fa ma non ho trovato funzioni per genrarlo.

Scrivi un commento

Prima di commentare leggi attentamente questa pagina.

Comments will be closed on 13 April 2010.