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.