Programmazione.it
Greenpeace
MAP Scripting 101
Recensito da Alessandro Carichini il 05-11-2010 ore 12:00
Copertina ISBN: 9781593272715
Autori: Adam DuVander
Editore: No Starch Press
Lingua: Inglese
Anno: 2010
Pagine: 376
Allegati: Nessuno
I servizi di mappe online sono relativamente giovani, ma ormai hanno positivamente invaso il nostro modo di vivere che ci sembra impossibile farne a meno. La cosa più interessante è che i maggiori provider come Google e Yahoo! continuano a fornire strumenti per gli sviluppatori per permettere di integrare facilmente questi servizi all'interno delle proprie applicazioni web e sugli smartphone.

Il testo "MAP Scripting 101" nasce con l'intento di mostrare agli sviluppatori tutti quegli strumenti di geolocalizzazione per poter gestire al meglio questo fantastico miscuglio di tecnologie. Il libro è ben scritto e il suo autore, l'americano Adam DuVander, sviluppatore web e articolista di Wired News, è molto puntiglioso nella descrizione del codice (JavaScript e PHP) ed estremamente chiaro quando introduce gli argomenti e parla di questioni puramente tecniche.

L'unico dubbio che mi resta è sul perché nel titolo ci sia il numero 101, come a richiamare quelle guide con oltre 100 tip, quando in realtà gli script sono 73 e pure numerati, ma soprattutto perché nel sottotitolo parla di Bing quando gli esempi riguardano esclusivamente Google e Yahoo!. Capisco che l'utilizzo della libreria Mapstraction renda il cambio del provider una questione marginale, però a questo punto, visto che se ne parla nell'introduzione, nel sottotitolo si poteva pure inserire OpenStreetMap e MapQuest Maps.

Sul sito dell'editore, oltre all'indice in formato PDF, c'è anche l'intero capitolo 2. Molto utile poi il blog interamente dedicato al libro, dove poter trovare, oltre alla maggior parte degli esempi proposti, ulteriori approfondimenti, nonché una piccola guida introduttiva in formato PDF che ricorda molto il primo capitolo.

Il capitolo 1 è una rapida introduzione alle basi della cartografia, con la descrizione delle coordinate (latitudine e longitudine) usate dai dispositivi GPS per localizzare un punto sulla Terra. Oltre a familiarizzare con i gradi e le conversioni tra unità di misura, già in questo primo capitolo viene mostrato il codice JavaScript per creare delle mappe con Google e Yahoo!, utilizzando prima le API proprietarie e poi la libreria Mapstraction. Una caratteristica molto importate e utile è l'utilizzo di identificatori numerici all'interno del codice sorgente per far comprendere meglio al lettore le parti che si stanno descrivendo. In pratica l'autore non si limita a descrivere in modo generico cosa farà il codice, ma si premura di descriverne dettagliatamente il funzionamento. In questo modo gli esempi diventano molto più semplici da capire. Nei paragrafi successivi si parla dello zoom, del resize e del posizionamento della mappa all'interno di una pagina web.

Il capitolo 2 riguarda la gestione delle icone marker e dei message box per indicare una specifica locazione geografica o un'area ben più vasta. In pratica è il capitolo da dove iniziano gli script veri e propri, e dalle videate che vengono proposte si nota come si faccia un largo uso di Google Maps. L'ultimo script del capitolo mostra come gestire un gruppo di marcatori (marker) con una funzione di cluster per evitare un antiestetico ammassamento di icone, che finiscono per nascondere la mappa vera e propria.

Visto che i GPS ragionano in termini di coordinate geografiche, mentre gli esseri umani tendono a localizzare i luoghi per indirizzo postale, nel capitolo 3 viene descritto come è possibile convertire l'indirizzo di un luogo nei valori numerici di latitudine e longitudine, in una parola geocoding. Il primo metodo è quello integrato in Mapstraction e quindi apparentemente client-side; il secondo invece utilizza uno script PHP, che verrà ampiamente descritto nel capitolo 9. In realtà anche il metodo che utilizza solo JavaScript è basato su una richiesta HTTP a un Web Service (Google o Yahoo!) con un output di risposta piuttosto variegato, come dimostra l'utilizzo dei formati JSON, XML, KML e CSV (con un parser PHP). L'ultimo script del capitolo riguarda la possibilità di ottenere delle coordinate geografiche dal codice postale, peccato solo che il database indicato dall'autore contenga unicamente città americane.

Col capitolo 4 possiamo personalizzare al massimo la nostra mappa disegnando linee e figure geometriche per identificare specifiche aree, colorare delle strade per tracciare dei percorsi e inserire miniature di immagini per rimandare a fotografie digitali geotaggate. L'esempio più interessante però riguarda la possibilità di sovrapporre un'immagine sopra un'ampia area di mappa per poter integrare maggiori informazioni sulla mappa stessa. In pratica se abbiamo l'immagine più dettagliata di una specifica mappa possiamo sovrapporla alla mappa di Google e mantenere il contesto inalterato. Tuttavia, il link di prova indicato dall'autore rimanda a una pagina non trovata del proprio sito.

Ora che abbiamo capito come disegnare e modificare una mappa arriva la possibilità di una vera e propria interazione, così nel capitolo 5 vediamo come creare degli eventi servendoci dell'immancabile libreria Mapstraction. Oltre al classico trascinamento dei marcatori e all'apertura e chiusura dei message box, lo script più utile riguarda la navigazione della mappa entro certi limiti per impedire che l'utente finale possa muoversi oltre un'area prefissata.

Nel capitolo 6 il tema centrale è il calcolo delle distanze tra dei punti disposti all'interno di una mappa. Si va dalla semplice distanza in linea d'aria tra due punti, a quella di un percorso di guida che deve seguire una specifica direzione, al calcolo della via più breve per raggiungere una determinata destinazione. L'autore poi si sbizzarrisce in una serie di script di indubbia utilità, come la verifica che un certo punto sia all'interno di un'area delimitata, oppure la possibilità di registrare all'interno di un database o feed RSS i risultati di una query effettuata dal provider Yahoo! all'interno di una specifica location.

Il capitolo 7 si preoccupa di localizzare geograficamente gli utenti, che si sono collegati al sito web. Per far questo ci sono diversi metodi; il più semplice e affidabile è sicuramente il geolocalizzatore JavaScript del W3C, che però non viene incorporato in tutti i browser; c'è poi l'alternativo Fire Eagle di Yahoo! che però necessita di una registrazione e della relativa chiave di autenticazione e infine c'è il classico approccio basato sull'associazione dell'indirizzo IP con l'area geografica dell'Internet Provider. Tutti i metodi descritti hanno dei pro e dei contro che l'autore avrebbe potuto sintetizzare con una semplice tabella.

Il capitolo 8 è interamente dedicato ai formati XML, JSON, GeoRSS, KML e GPX utilizzati dai diversi provider (Google, Yahoo!, ecc.) per comunicare i dati geografici richiesti. Si tratta di un piccolo vademecum su come “parsare” questi formati utilizzando sia JavaScript che PHP; esso è quindi estremamente utile, anche in ambiti differenti dalla geolocalizzazione. Si parla infatti anche di come convertire un formato XML in JSON.

Se finora si è parlato esclusivamente di tecnologia client-side il capitolo 9 ci riporta in ambito server, spiegando come installare e configurare i classici servizi che sono alla base di un web server e quindi PHP e MySQL. Su PHP c'è pure una rapidissima introduzione alla struttura del linguaggio per spiegare meglio alcuni script presenti nel capitolo successivo. Anche su MySQL c'è una piccola guida alla creazione di tabelle e a come importare dati esterni (CSV) all'interno di un database. Si conclude con l'utilizzo combinato di PHP e MySQL per la gestione di un database di localizzazioni geografiche.

Infine nel capitolo 10 vengono analizzati cinque progetti nati dal miscuglio (mashup) delle diverse tecniche mostrate nei capitoli precedenti. Le prime due sono di natura scientifica visto che riguardano la meteorologia, grazie alle API di Yahoo!, e il controllo dei terremoti registrati attraverso i feed dello United States Geological Survey. Gli altri invece sono puramente sociali visto che si occupano di localizzare concerti, caffetterie e tutto ciò che può essere taggato via Twitter.

Nell'Appendice A troviamo una brevissima guida alla programmazione JavaScript per dare le basi del linguaggio anche a chi non lo conosce per niente, ma vuole utilizzare ugualmente la libreria Mapstraction per le proprie mappe. Consistendo di una ventina di pagine, questa parte del testo è a mio avviso più una sorta di ripasso per chi non usa di frequente JavaScript, piuttosto che una vera guida non lo conosce affatto. Nell'Appendice B abbiamo una vera e propria quick reference alle funzioni della libreria Mapstraction, utile per approfondire alcune tematiche e personalizzare al meglio gli script proposti nel libro.
proQuesto testo è una guida pratica per chi vuole integrare nelle proprie applicazioni web le classiche mappe online di Google o Yahoo!. Molto accurata la descrizione degli esempi.
controNessun aspetto negativo da segnalare.
Copyright Programmazione.it® 1999-2005. Tutti i diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002.