01 dicembre 2007

Google Maps API

Questa settimana ho dovuto lavorare ad un progetto che comprendeva un motore di ricerca di ristoranti nel mondo.

Il cliente mi aveva espressamene richiesto l'uso di Google Maps, e quindi mi sono messo a studiarlo.

Come sempre il time-to-market era abbastanza stretto... 3 giorni per fare tutto: Analisi, sviluppo, test....

Ho piacevolemente scoperto che utilizzando le Api di Google, con poche righe di Javascript è facile far apparire una mappa, scegliere il livello di zoom, centrarla su una zona specifica, e impostare dei marker in determinate locazioni. Non male!

Il problema più grosso è dato dal fatto che sia la centratura, ma soprattutto i marker, vanno indicati mediante coodinate, ossia latitudine e longitudine.

Esiste un oggetto chiamato geocoder, che consente di ottenere le coordinate a partire da un'indirizzo scritto in testo (es. Via Savoia 84, 00198 Roma) ma per stessa ammissione di Google è abbastanza lento (qualche frazione di secondo) e soprattutto pesante da elaborare sul server di Google, tanto che limitano 5.000 interrogazioni al giorno per ogni sito.

L'idea è stata quindi quella di scrivere un software che partisse da un database di indirizzi e interrogasse ciclicamente Geocoder in modo da ottenere tutte le coordinate. Per farlo funzionare correttamente ho dovuto utilizzare ASP e Javascript, in una sorta di applicazione web automatica: l'asp costruiva la pagina contenente il javascript, e quest'ultimo si interfacciava con le Api di Google per ottenere le coordinate. Queste venivano passate tramite GET ad una pagina che si occupava di salvare i dati in un DB, e avanti così per 3.000 indirizzi.

L'elaborazione complessiva ha impiegato qualche ora, con qualche interruzione dovute a caratteri "strani" nei nomi dei ristoranti, ma alla fine ho ottenuto quello che volevo: una lista di coordinate pronte da sfruttare.

A quel punto il più era fatto, è bastato scrivere un piccolo motore di ricerca che consentisse di ricercare Paese, città e ristorante per aggiornare di conseguenza la mappa. Niente male!

Volete vedere il risultato? ristoranti.asp

3 commenti:

Rasty ha detto...

Fico! La prossima volta magari fai pure in modo che i box di ricerca non siano bloccati nel bel mezzo della pagina...! ;)

Fabrizio Farenga ha detto...

Sei la seconda persona che mi segnalail problema... su qualche decina che l'hanno testato.

Riesci a farmi avere uo screenshot del problema? Credo sia qualcosa relato ai Div, ma ho testato con IE, Firefox e Safari, senza problemi.

Il box dovrebbe essere alla destra della mappa

Rasty ha detto...

Il problema appare quando resizi la finestra.. resaiza!!