<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7716844805830212426</id><updated>2011-11-28T01:40:21.364+01:00</updated><category term='metodi'/><category term='Google Maps'/><category term='yahoo'/><category term='mappe'/><category term='javascript'/><category term='controlli'/><category term='API'/><category term='Yahoo Maps'/><title type='text'>c-API-amoci</title><subtitle type='html'>Un blog dedicato a chi voglia imparare e approfondire l'utilizzo delle API di Google Maps e altro</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-6810069099512184826</id><published>2009-11-30T11:52:00.004+01:00</published><updated>2009-11-30T12:03:35.194+01:00</updated><title type='text'>Visualizzazione markers su una Yahoo! Map</title><content type='html'>Complichiamo solo leggermente il codice presente nel post precedente per consentire la visualizzazione di due markers sui quali viene associata la visualizzazione di un testo se vi ci si clicca sopra.&lt;br /&gt;Il marker viene visualizzato attraverso il metodo &lt;span style="font-weight: bold;"&gt;map.addOverlay()&lt;/span&gt;; ad esso viene associato l' l'evento &lt;span style="font-weight: bold;"&gt;MouseClick&lt;/span&gt; al cui verificarsi verrà elaborata la funzione &lt;span style="font-weight: bold;"&gt;openSmartWindow&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Segue la parte di codice che gestisce il tutto e naturalmente, potrete vedere il risultato cliccando &lt;a href="http://cirdan.ilbello.com/cirdanmaps/yahoo2.html"&gt;qui&lt;/a&gt;.&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;// Crea il primo marker&lt;br /&gt;  var marker1 = new YMarker("Viale Italia, 40, la spezia, italia");&lt;br /&gt;  // Stringa da visualizzare cliccando sul primo marker&lt;br /&gt;  var contenuto1 = "&lt;p&gt;Qui ho abitato dalla nascita al 1990&lt;/p&gt;";&lt;br /&gt;  // Apre una finestra al verificarsi dell'evento 'click' sul marker&lt;br /&gt;  YEvent.Capture(marker1, EventsList.MouseClick,&lt;br /&gt;   function() {&lt;br /&gt;    marker1.openSmartWindow(contenuto1); &lt;br /&gt;   });&lt;br /&gt;  // Visualizza il marker&lt;br /&gt;  map.addOverlay(marker1);&lt;br /&gt;&lt;br /&gt;// Crea il secondo marker&lt;br /&gt;  var marker2 = new YMarker("Via pontegrande 120, la spezia, italia");&lt;br /&gt;  // Stringa da visualizzare cliccando sul secondo marker&lt;br /&gt;  var contenuto2 = "&lt;p&gt;Qui ho vissuto dal 1990 al 2000&lt;/p&gt;";&lt;br /&gt;  // Apre una finestra al verificarsi dell'evento 'click' sul marker&lt;br /&gt;  YEvent.Capture(marker2, EventsList.MouseClick,&lt;br /&gt;   function() {&lt;br /&gt;    marker2.openSmartWindow(contenuto2); &lt;br /&gt;   });&lt;br /&gt;  // Visualizza il marker&lt;br /&gt;  map.addOverlay(marker2);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Per semplicità mi sono limitato a ripetere per ogni marker i passi necessari alla loro visualizzazione. Volendo ricercare una soluzione più raffinata, avremmo potuto includere i dati da visualizzare in un array e visualizzare il tutto tramite un ciclo iterativo.  Ma questo potrebbe essere oggetto di un ulteriore post.&lt;br /&gt;Alla prossima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-6810069099512184826?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/6810069099512184826/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/11/visualizzazione-markers-su-una-yahoo.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6810069099512184826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6810069099512184826'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/11/visualizzazione-markers-su-una-yahoo.html' title='Visualizzazione markers su una Yahoo! Map'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-8168135009895641447</id><published>2009-11-26T12:03:00.019+01:00</published><updated>2009-11-26T12:47:27.972+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo Maps'/><category scheme='http://www.blogger.com/atom/ns#' term='mappe'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><title type='text'>Introduzione alle Yahoo! Maps</title><content type='html'>&lt;div&gt;Sempre stimolato da &lt;a href="http://digitaladoptive.wordpress.com/"&gt;digitaladoptive&lt;/a&gt;, unico antidoto contro la cronica mancanza di tempo necessaria per riempire di contenuti questo blog, stavolta voglio introdurre ai neofiti del &lt;a href="http://it.wikipedia.org/wiki/Mashup"&gt;mashup&lt;/a&gt; le API di Yahoo! Maps.&lt;br /&gt;Per chi ha avuto la pazienza di leggere i miei post riguardanti le API di Google Maps, si accorgerà che i metodi e le sintassi sono molto molto simili.&lt;br /&gt;Il semplice obiettivo di questo post è di inserire una Yahoo! Map, centrata in un particolare punto del globo terracqueo, in una pagina web.&lt;br /&gt;Per iniziare a lavorare, abbiamo bisogno di un &lt;em&gt;account&lt;/em&gt; Yahoo! su quale chiedere una chiave ("&lt;em&gt;application id&lt;/em&gt;"). Almeno nelle prime fasi, non avremo bisogno di uno spazio web: a differenza delle API di Google Maps, le API di Yahoo! Maps lavorano anche in locale, cioè sul proprio PC (purchè collegato alla Rete, evidentemente)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Per chiedere la chiave, come si diceva, è necessario avere un account Yahoo! e andare alla seguente pagina &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://api.search.yahoo.com/webservices/register_application"&gt;http://api.search.yahoo.com/webservices/register_application&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Si presenterà la seguente schermata dove inserire alcuni dati:&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_ZVCrNJe2IPw/Sw5mXvOseOI/AAAAAAAAAB4/75HCdGMjgIU/s1600/16.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408372760519669986" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 293px" alt="" src="http://3.bp.blogspot.com/_ZVCrNJe2IPw/Sw5mXvOseOI/AAAAAAAAAB4/75HCdGMjgIU/s400/16.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alcune delucidazioni:&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;1. Il Vostro account Yahoo! apparirà di &lt;em&gt;default&lt;/em&gt;&lt;/div&gt;&lt;div&gt;2. Selezionate "Generic"&lt;/div&gt;&lt;div&gt;3. Potete inserire qualunque cosa&lt;/div&gt;&lt;div&gt;4. Potete inserire qualunque cosa&lt;/div&gt;&lt;div&gt;5. Non è un campo obbligatorio ma, a vostra futura memoria, suggerisco di inserire l'indirizzo della pagina web dove inserirete la mappa&lt;/div&gt;&lt;div&gt;6. Inserite la vostra e-mail &lt;/div&gt;&lt;div&gt;7. Inserite una breve descrizione&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Il resto non consideratelo.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Nella pagina che segue otterrete una stringa di caratteri che copierete nel codice qui in basso dove indicato.&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_ZVCrNJe2IPw/Sw5mp8Y3IKI/AAAAAAAAACA/vOH2XC9UhZM/s1600/rtereg.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5408373073289617570" style="WIDTH: 400px; CURSOR: hand; HEIGHT: 109px" alt="" src="http://3.bp.blogspot.com/_ZVCrNJe2IPw/Sw5mp8Y3IKI/AAAAAAAAACA/vOH2XC9UhZM/s400/rtereg.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Il codice è diffusamente commentato, non dovreste avere problemi di comprensione (ma sono qui a vostra disposizione!)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.0&amp;appid= INSERITE_QUI_LA_YAHOO_ID_RICHIESTA_SUL_SITO"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Definizione struttura pagina: messa la mappa di dimensioni 550x450 px //--&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style type="text/css"&gt;&lt;br /&gt;#spaziomappa {&lt;br /&gt;width: 550px;&lt;br /&gt;height: 450px;&lt;br /&gt;align: center;}&lt;br /&gt;&amp;lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&gt;&lt;br /&gt;&amp;lt;div id="spaziomappa" align="center"&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;    // centra la mappa alle coordinate indicate (lat, long)&lt;br /&gt;    var lat = 44.063889;&lt;br /&gt;    var long = 9.883333;&lt;br /&gt;&lt;br /&gt;    // definizione coppia di coordinate che identificano il Golfo della Spezia&lt;br /&gt;    var punto = new YGeoPoint(lat, long);  &lt;br /&gt;    var livellozoom = 7&lt;br /&gt;&lt;br /&gt;    // Definisce l'oggetto map che caricherà una mappa nell'elemento "spaziomappa" della pagina web&lt;br /&gt;    var map = new YMap(document.getElementById('spaziomappa'));&lt;br /&gt;&lt;br /&gt;    // Aggiunge la barra di controllo che consente tre tipi di visualizzazione:&lt;br /&gt;    // cartina (REG), satellite (SAT) e ibrida (HYB)&lt;br /&gt;     map.addTypeControl();&lt;br /&gt;&lt;br /&gt;    // Aggiunge il controllo per lo zoom&lt;br /&gt;    map.addZoomLong();&lt;br /&gt;&lt;br /&gt;    // Imposta il tipo di mappa, in questo caso ibrida; per altri tipi di visualizzazione &lt;br /&gt;    // Si può usare SAT (satellite) o REG (cartina)&lt;br /&gt;    map.setMapType(YAHOO_MAP_HYB);&lt;br /&gt;  &lt;br /&gt;    // Mostra la mappa centrata alle coordinate definite dalla variabile 'punto'al   &lt;br /&gt;    // livello 7 di zoom &lt;br /&gt;    map.drawZoomAndCenter(punto, livellozoom);&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Il risultato lo potete trovare &lt;a href="http://cirdan.ilbello.com/cirdanmaps/yahoo1.html"&gt;qui&lt;/a&gt;.&lt;br /&gt;Nelle prossime puntate cercheremo di fare qualcosa di più, per adesso mi limito a suggerirvi i links alla documentazione ufficiale di Yahoo! Maps API (inglese):&lt;ul&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/maps/"&gt;http://developer.yahoo.com/maps/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/maps/ajax/"&gt;http://developer.yahoo.com/maps/ajax/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-8168135009895641447?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/8168135009895641447/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/11/introduzione-alle-yahoo-maps.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8168135009895641447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8168135009895641447'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/11/introduzione-alle-yahoo-maps.html' title='Introduzione alle Yahoo! Maps'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZVCrNJe2IPw/Sw5mXvOseOI/AAAAAAAAAB4/75HCdGMjgIU/s72-c/16.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-8789158836981727649</id><published>2009-04-28T14:56:00.005+02:00</published><updated>2009-04-28T15:21:26.292+02:00</updated><title type='text'>La febbre suina vista da Google Maps, API e mashups</title><content type='html'>Riprendo a scrivere su questo blog, fermo da un po', non per scopi didattici ma per documentare i preziosi contributi che Google Maps e API possono avere nella nostra vita quotidiana.&lt;br /&gt;La triste vicenda è quella della febbre suina. Diversi ricercatori hanno scelto di creare mappe dove geolocalizzare i casi di febbre suina dando un quadro della diffusione del virus. Ecco i principale esempi:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;t=p&amp;msa=0&amp;msid=106484775090296685271.0004681a37b713f6b5950&amp;ll=32.639375,-110.390625&amp;spn=15.738151,25.488281&amp;z=5"&gt;Google Map di Niman (Biomedical Research Pittsburgh, USA)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mibazaar.com/swineflu.html"&gt;Mibazaar&lt;/a&gt;&lt;br /&gt;Interessante mashup tra Google Maps e Twitter: sulla mappa vengono visualizzati in tempo reale i tweets le cui keywords riguardano la febbre suina&lt;br /&gt;&lt;br /&gt;&lt;a href="http://uchalas.com/influenza/"&gt;Mapa de Influenza&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=109496610648025582911.0004686892fbefe515012&amp;ll=35.487978,-58.414994&amp;spn=40.577184,116.519623&amp;source=embed"&gt;2009 Swine Flu (H1N1) Outbreak Map&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://homepage.ntlworld.com/keir.clarke/swineflu.htm"&gt;Human swine flu map&lt;/a&gt;&lt;br /&gt;Mashup tra Google Maps e The Guardian&lt;br /&gt;&lt;br /&gt;Segnalo infine il Google Doc &lt;a href="http://spreadsheets.google.com/pub?key=rFUwm_vmW6WWBA5bXNNN6ug"&gt;Swine flu case by case&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-8789158836981727649?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/8789158836981727649/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/04/la-febbre-suina-vista-da-google-maps.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8789158836981727649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8789158836981727649'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/04/la-febbre-suina-vista-da-google-maps.html' title='La febbre suina vista da Google Maps, API e mashups'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-668615400607296914</id><published>2009-02-11T11:25:00.005+01:00</published><updated>2009-02-11T11:51:22.115+01:00</updated><title type='text'>Geocoding, ovvero come ottenere coordinate geografiche da un indirizzo</title><content type='html'>In attesa di tornare a parlare di API, prendo spunto da una domanda fatta da un utente di questo blog e che suppongo possa essere utile a molti di voi. Abbiamo visto come visualizzare su una Google Map una serie di indirizzi e relative coordinate, caricati direttamente sul database MySQL o importati da un file con estensione &lt;a href="http://it.wikipedia.org/wiki/Comma-separated_values"&gt;.CSV&lt;/a&gt; (di fatto da qualsiasi foglio eletttonico tramite opportuna trasformazione).&lt;br /&gt;Può capitare di avere una serie di indirizzi ma non le relative coordinate geografiche. Esiste allora la possibilità di elaborare automaticamente una lista di indirizzi aggiungendo le coordinate di cui abbiamo bisogno?&lt;br /&gt;Una delle soluzioni ci viene offerta da &lt;a href="http://www.batchgeocode.com/"&gt;questo servizio&lt;/a&gt; che utilizza le &lt;a href="http://maps.yahoo.com/"&gt;Yahoo Maps&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Come si procede per la nostra attività di &lt;a href="http://it.wikipedia.org/wiki/Geocoding"&gt;geocoding&lt;/a&gt;? E' molto semplice&lt;br /&gt;&lt;br /&gt;1. Scaricate sul vostro PC il &lt;a href="http://www.batchgeocode.com/excel_example.xls"&gt;template excel&lt;/a&gt; (Step #1)&lt;br /&gt;2. Compilate il template coi dati in vostro possesso (non è necessario valorizzare tutti i campi)&lt;br /&gt;3. Copiate e incollate nell'apposito riquadro (Step #2)&lt;br /&gt;4. Cliccate sul tasto "Validate" (Step #3)&lt;br /&gt;5. Cliccate sul tasto "Run geocode" (Step #5)&lt;br /&gt;6. Apparirà una "nuova" lista (Step #6), comprensiva di coordinate, pronta da copiare (basterà cliccare col tasto destro del mouse, selezionare tutto e copiare negli appunti)&lt;br /&gt;7. Incollate la selezione su Excel o &lt;a href="http://www.openoffice.org/"&gt;Open Office&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Dopo questa semplicissima procedura, potrete salvare il vostro file in formato csv ed essere importato nella tabella MySQL, per poi continuare il nostro lavoro come come abbiamo visto in &lt;a href="http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con.html"&gt;questo articolo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Questa è una delle soluzioni già pronte, in realtà potremmo crearci una applicazione personale che utilizzi il Servizio Geocoding delle &lt;a href="http://code.google.com/intl/it/apis/maps/documentation/geocoding/"&gt;Google Maps API&lt;/a&gt;. Si fà cioè una request al servizio (in formato &lt;a href="http://it.wikipedia.org/wiki/Representational_State_Transfer"&gt;REST&lt;/a&gt;) e la risposta può avvenire in formato &lt;a href="http://it.wikipedia.org/wiki/JSON"&gt;JSON&lt;/a&gt;, &lt;a href="http://it.wikipedia.org/wiki/Keyhole_Markup_Language"&gt;KML&lt;/a&gt;, &lt;a href="http://it.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt; e anche CSV. Il discorso però è abbastanza complesso e, forse, potrebbe essere oggetto di un apposito post.&lt;br /&gt;La cosa da sottolineare &lt;strong&gt;assolutamente&lt;/strong&gt; è che non si può utilizzare il servizio per qualcosa che sia diverso dal mostrare i risultati su una Google Map.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-668615400607296914?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/668615400607296914/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/02/geocoding-ovvero-come-ottenere.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/668615400607296914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/668615400607296914'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/02/geocoding-ovvero-come-ottenere.html' title='Geocoding, ovvero come ottenere coordinate geografiche da un indirizzo'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-8000330083972905358</id><published>2009-01-31T17:09:00.007+01:00</published><updated>2009-02-01T10:06:44.315+01:00</updated><title type='text'>Caricare markers da un database con MySQL e PHP (seconda parte)</title><content type='html'>Con quanto svolto nel precedente articolo abbiamo di fatto concluso il nostro lavoro. Si tratterà infatti di includere in una pagina html il codice che legga il file XML prodotto dallo script PHP e valorizzi i parametri dei vari metodi javascript per la visualizzazione. &lt;br /&gt;Nell'esempio viene utilizzato il metodo statico&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;GEvent.addListener&lt;br /&gt; (marker, 'mouseover', function() {marker.openInfoWindowHtml(html)});&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;che attiva la visualizzazione, al passaggio del mouse, di una finestra di dialogo di una stringa (variabile html) contenente denominazione e descrizione del marker &lt;br /&gt;&lt;br /&gt;Non credo ci siano ulteriori commenti da fare se non dare una occhiata al codice. Il risultato del progetto lo potete trovare &lt;a href="http://cirdan.ilbello.com/cirdanmaps/gmap_db.htm"&gt;qui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;  &amp;lt;head&gt;&lt;br /&gt;    &amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;&lt;br /&gt;    &amp;lt;title&gt;Visualizzazione markers su Google Map tramite MySQL e PHP&amp;lt;/title&gt;&lt;br /&gt;    &amp;lt;script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=LAVOSTRAAPIKEY"&lt;br /&gt;            type="text/javascript"&gt;&amp;lt;/script&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;    //&amp;lt;![CDATA[&lt;br /&gt;&lt;br /&gt;    function load() {&lt;br /&gt;      if (GBrowserIsCompatible()) {&lt;br /&gt;        var map = new GMap2(document.getElementById("map"));&lt;br /&gt;        map.addControl(new GLargeMapControl());&lt;br /&gt;        map.addControl(new GMapTypeControl());&lt;br /&gt;        map.setCenter(new GLatLng(44.0750963, 10.700323), 8);&lt;br /&gt;&lt;br /&gt;        GDownloadUrl("creaxml.php", function(data) {&lt;br /&gt;          var xml = GXml.parse(data);&lt;br /&gt;          var markers = xml.documentElement.getElementsByTagName("marker");&lt;br /&gt;          for (var i = 0; i &lt; markers.length; i++) {&lt;br /&gt;            var denom = markers[i].getAttribute("denom");&lt;br /&gt;            var indirizzo = markers[i].getAttribute("indirizzo");&lt;br /&gt;            var tipomarker = markers[i].getAttribute("tipomarker");&lt;br /&gt;            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),&lt;br /&gt;                                    parseFloat(markers[i].getAttribute("long")));&lt;br /&gt;            var marker = createMarker(point, denom, indirizzo, tipomarker);&lt;br /&gt;            map.addOverlay(marker);&lt;br /&gt;          }&lt;br /&gt;        });&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function createMarker(point, denom, indirizzo, tipomarker) {&lt;br /&gt;      var marker = new GMarker(point);&lt;br /&gt;      var html = "("+tipomarker+")&amp;lt;br/&gt;&amp;lt;b&gt;" + denom + "&amp;lt;/b&gt; &amp;lt;br/&gt;" + indirizzo;&lt;br /&gt;      GEvent.addListener(marker, 'mouseover', function() {&lt;br /&gt;        marker.openInfoWindowHtml(html);&lt;br /&gt;      });&lt;br /&gt;      return marker;&lt;br /&gt;    }&lt;br /&gt;    //]]&gt;&lt;br /&gt;  &amp;lt;/script&gt;&lt;br /&gt;  &amp;lt;/head&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;body onload="load()" onunload="GUnload()"&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Volendo raffinare l'applicazione, si potrebbe ad esempio visualizzare un marker di colore diverso per ogni tipologia di punto (nel nostro caso lavoro oppure studio). Il codice relativo non è molto più complicato di quanto abbiamo visto, potete fare rierimento alla già citata guida su &lt;a href="http://code.google.com/support/bin/answer.py?answer=65622"&gt;Google Code&lt;/a&gt;. Oppure ci torneremo in uno dei prossimi articoli.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-8000330083972905358?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/8000330083972905358/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con_31.html#comment-form' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8000330083972905358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/8000330083972905358'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con_31.html' title='Caricare markers da un database con MySQL e PHP (seconda parte)'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-1321263316271944633</id><published>2009-01-29T12:07:00.035+01:00</published><updated>2009-01-30T09:34:01.566+01:00</updated><title type='text'>Caricare markers da un database con MySQL e PHP (prima parte)</title><content type='html'>Una possibilità davvero interessante è quella di poter visualizzare su una Google Map dei &lt;em&gt;markers&lt;/em&gt; le cui coordinate ed altri elementi siano caricati da un database esterno.&lt;br /&gt;Questo ci consente di poter utilizzare insiemi molto grandi di coordinate lasciando sempre inalterato il codice javascript di richiamo della mappa.&lt;br /&gt;In questo articolo non concluderemo il nostro lavoro, ci limiteremo a capire come costruire il nostro database, popolarlo e creare scripts Php per l'interrogazione dei dati e la realizzazione di un output XML. Ci ritroveremo dunque nella stessa situazione del precedente post: un file XML da dare "in pasto" al codice javascript affinchè i markers vengano visualizzati sulla mappa.&lt;br /&gt;&lt;br /&gt;Questo post e il successivo fanno ampio riferimento al materiale, opportunamente semplificato e integrato nella parte divulgativa, contenuto nel bellissimo articolo (in inglese) che trovate su &lt;a href="http://code.google.com/support/bin/answer.py?answer=65622"&gt;Google Code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Definiamo il progetto da realizzare: una sorta di "curriculum geografico", cioè una Google Map dove vengono visualizzati tutti i luoghi dove ho studiato o lavorato, le cui informazioni sono contenute in un database.&lt;br /&gt;&lt;br /&gt;Essendo un progetto didattico, i dati in realtà sono molto pochi. Le potenzialità invece sono infinite, poichè potremmo inserire nel database grandi quantità di dati realizzate da terze parti e, con le opportune conoscenze tecniche, filtrarli nella maniera che più ci interessa.&lt;br /&gt;&lt;br /&gt;Di cosa abbiamo bisogno:&lt;br /&gt;1) Uno spazio web con supporto &lt;a href="http://it.wikipedia.org/wiki/Mysql"&gt;MySQL&lt;/a&gt; e &lt;a href="http://it.wikipedia.org/wiki/Php"&gt;PHP&lt;/a&gt;&lt;br /&gt;2) Alcuni cenni su come si costruisce un &lt;a href="http://it.wikipedia.org/wiki/Modello_relazionale"&gt;database relazionale&lt;/a&gt;&lt;br /&gt;3) Piccole conoscenze di &lt;a href="http://www.php.net/docs.php"&gt;PHP&lt;/a&gt; e &lt;a href="http://it.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PUNTO 1&lt;br /&gt;&lt;/strong&gt;Ci sono due possibilità: la prima è quella di registrarsi su Internet ad un servizio di spazio web gratuito con le caratteristiche cui sopra. Vi ho già citato &lt;a href="http://www.ilbello.com/"&gt;ilbello.com hosting&lt;/a&gt;, ma i servizi di questo tipo sono innumerevoli. Una selezione ai altri servizi gratuiti e ad free potete trovarla in &lt;a href="http://woork.blogspot.com/2008/12/5-awesome-free-web-hosting-services.html"&gt;questo post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La seconda possibilità è lavorare in locale, cioè utilizzare il proprio PC come fosse un server web. A questo scopo potete utilizzare pacchetti software come &lt;a href="http://it.wikipedia.org/wiki/XAMPP"&gt;XAMPP&lt;/a&gt; o &lt;a href="http://it.wikipedia.org/wiki/EasyPHP"&gt;EasyPHP&lt;/a&gt;. Per la corretta installazione potete far riferimento ai link in calce all'articolo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PUNTO 2&lt;br /&gt;&lt;/strong&gt;Ci affideremo a un database relazionale, strutturato in tabelle (a noi ne serve solo una). Il nostro spazio web, sia esso reale o virtuale, ci consentirà di creare e popolare (inserire dati) un database attraverso il linguaggio di amministrazione &lt;a href="http://it.wikipedia.org/wiki/PhpMyAdmin"&gt;PhpMyAdmin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Per quanto riguarda il servizio ilbello.com si accederà all'interfaccia PhpMyAdmin all'indirizzo &lt;a href="http://sql.ilbello.com/"&gt;http://sql.ilbello.com/&lt;/a&gt;, inserendo &lt;em&gt;username&lt;/em&gt; e &lt;em&gt;password&lt;/em&gt; fornitici al momento della registrazione. Per gli altri servizi, cambierà ovviamente l'indirizzo di accesso ma le modalità saranno identiche.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ZVCrNJe2IPw/SYIlDht1PHI/AAAAAAAAAAo/R9-XaLPk1uI/s1600-h/phpmyadmin.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5296836854261562482" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 278px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_ZVCrNJe2IPw/SYIlDht1PHI/AAAAAAAAAAo/R9-XaLPk1uI/s320/phpmyadmin.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Per creare e popolare la tabella del database si posono utilizzare diversi metodi:&lt;br /&gt;&lt;br /&gt;1) Inserendo ciascun elemento attraverso l'interfaccia di PhpMyAdmin&lt;br /&gt;2) Importando in PhpMyAdmin opportuni files sql come ad esempio questo:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;CREATE TABLE `markers`(&lt;br /&gt; `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt; `denom` VARCHAR( 60 ) NOT NULL ,&lt;br /&gt; `indirizzo` VARCHAR( 60 ) NOT NULL ,&lt;br /&gt; `lat` FLOAT( 10, 6 ) NOT NULL ,&lt;br /&gt; `long` FLOAT( 10, 6 ) NOT NULL,&lt;br /&gt;  `tipomarker` VARCHAR( 30 ) NOT NULL ,&lt;br /&gt; ) ENGINE = MYISAM ;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Cosa dico attraverso questo set di istruzioni?&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;&lt;br /&gt;crea una tabella con 6 campi: il campo id è un indice che si autoincremente; il secondo campo, denom, ha al massimo 60 caratteri; lo stesso dicasi per il campo indirizzo; lat e long sono campi numerici, al massimo di 10 cifre di cui 6 decimali; tipomarker ha al massimo 30 caratteri; &lt;a href="http://it.wikipedia.org/wiki/MyISAM"&gt;MYISAM&lt;/a&gt; è il motore di indicizzazione del database.&lt;br /&gt;&lt;/blockquote&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;3) Importando opportuni files in formato &lt;a href="http://it.wikipedia.org/wiki/Comma-separated_values"&gt;CSV&lt;/a&gt; (ottenuti da terze parti o dal nostro &lt;a href="http://it.wikipedia.org/wiki/Foglio_elettronico"&gt;foglio elettronico&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_ZVCrNJe2IPw/SYImZv32Q6I/AAAAAAAAAAw/VJ4DgVe9zCE/s1600-h/importacsv.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5296838335530419106" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 207px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_ZVCrNJe2IPw/SYImZv32Q6I/AAAAAAAAAAw/VJ4DgVe9zCE/s320/importacsv.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PUNTO 3&lt;/strong&gt;&lt;br /&gt;Attingiamo adesso ad alcuni elementi di PHP per accedere ai dati del database ed elaborarli in modo da formare un documento XML. Per motivi di sicurezza si sceglie di creare due script distinti, uno con le credenziali di autenticazione e l'altro che riceve le credenziali, accede al database e forma il documento XML. Ecco i listati dei due file, credenziali.php e &lt;a href="http://cirdan.ilbello.com/cirdanmaps/creaxml.php"&gt;creaxml.php&lt;/a&gt;. Notate che cliccando su quest'ultimo link non viene visualizzato lo script bensì il suo risultato, cioè il file XML con i dati che visualizzeremo sulla mappa.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;?&lt;br /&gt;//Ovviamente $username, $password e $database conterranno i valori comunicati dal &lt;br /&gt;  vostro fornitore del servizio di hosting o scelti a piacere se utilizzate un server&lt;br /&gt;  web in locale&lt;br /&gt;$host="localhost";&lt;br /&gt;$username="vostrousername";&lt;br /&gt;$password="vostrapassword";&lt;br /&gt;$database="vostrodatabase";&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// richiede i dati di accesso contenuti in credenziali.php&lt;br /&gt;require("credenziali.php");&lt;br /&gt;&lt;br /&gt;//Sostituisce alcuni caratteri speciali con il relativo codice entita'&lt;br /&gt;function parseToXML($htmlStr) &lt;br /&gt;{ &lt;br /&gt;$xmlStr=str_replace('&lt;','&amp;lt;',$htmlStr); &lt;br /&gt;$xmlStr=str_replace('&gt;','&amp;gt;',$xmlStr); &lt;br /&gt;$xmlStr=str_replace('"','&amp;quot;',$xmlStr); &lt;br /&gt;$xmlStr=str_replace("'",'&amp;#39;',$xmlStr); &lt;br /&gt;$xmlStr=str_replace("&amp;",'&amp;amp;',$xmlStr); &lt;br /&gt;return $xmlStr; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;// Si connette al database&lt;br /&gt;$connection=mysql_connect (localhost, $username, $password);&lt;br /&gt;if (!$connection) {&lt;br /&gt;  die('Non connesso : ' . mysql_error());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$db_selected = mysql_select_db($database, $connection);&lt;br /&gt;if (!$db_selected) {&lt;br /&gt;  die ('database non selezionato : ' . mysql_error());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Seleziona tutte le righe della tabella con i markers&lt;br /&gt;$query = "SELECT * FROM markers WHERE 1";&lt;br /&gt;$result = mysql_query($query);&lt;br /&gt;if (!$result) {&lt;br /&gt;  die('Query invalida: ' . mysql_error());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;header("Content-type: text/xml");&lt;br /&gt;&lt;br /&gt;// Genera il nodo principale del file XML&lt;br /&gt;echo '&amp;lt;markers&gt;';&lt;br /&gt;&lt;br /&gt;// Ciclo che crea il resto del documento XML sulla base dei dati della tabella&lt;br /&gt;while ($row = @mysql_fetch_assoc($result)){&lt;br /&gt;  // ADD TO XML DOCUMENT NODE&lt;br /&gt;  echo '&amp;lt;marker ';&lt;br /&gt;  echo 'denom="' . parseToXML($row['denom']) . '" ';&lt;br /&gt;  echo 'indirizzo="' . parseToXML($row['indirizzo']) . '" ';&lt;br /&gt;  echo 'lat="' . $row['lat'] . '" ';&lt;br /&gt;  echo 'long="' . $row['long'] . '" ';&lt;br /&gt;  echo 'tipomarker="' . $row['tipomarker'] . '" ';&lt;br /&gt;  echo '/&gt;';&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Genera il tag di chiusura del nodo principale&lt;br /&gt;echo '&amp;lt;/markers&gt;';&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Per adesso abbiamo finito, nel prossimo articolo vedremo come integrare il tutto all'interno nella Google Map, utilizzando istruzioni di cui ormai conosciamo il significato.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linkografia per chi desidera installare un server in locale&lt;br /&gt;&lt;br /&gt;Per installare XAMPP&lt;br /&gt;&lt;a href="http://kirdan.wordpress.com/2008/10/16/corso-joomla-su-second-life-il-resoconto/"&gt;@ Corso Joomla su Second Life (consultare le slide dalla 6 alla 22)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/cirdan/corso-joomla-lez1-presentation"&gt;@ Slideshare (consultare le slide dalla 6 alla 22)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mavimo.org/varie/installazione_configurazione_xampp"&gt;@ XAMPP step by step &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cionfs.it/forum/f26/guida-installare-xampp-su-windows-t159.html"&gt;@ Installare XAMPP su Windows&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Per installare Easy PHP&lt;br /&gt;&lt;a href="http://php.html.it/guide/leggi/94/guida-php-su-windows"&gt;@ Guida PHP su Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codicefacile.it/tutorials/tutorials.php/1/Installare_e_configurare_PHP_e_MySQL"&gt;@ Installare e configurare Php e MySQL&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-1321263316271944633?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/1321263316271944633/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con.html#comment-form' title='14 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/1321263316271944633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/1321263316271944633'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con.html' title='Caricare markers da un database con MySQL e PHP (prima parte)'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZVCrNJe2IPw/SYIlDht1PHI/AAAAAAAAAAo/R9-XaLPk1uI/s72-c/phpmyadmin.gif' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-2412590262638013391</id><published>2009-01-19T14:51:00.044+01:00</published><updated>2009-01-20T09:13:24.037+01:00</updated><title type='text'>Visualizzare markers contenuti in un file XML</title><content type='html'>Come anticipato nel post precedente, cominciamo a "raffinare" il procedimento per la visualizzazione sulla nostra mappa di particolari &lt;em&gt;markers&lt;/em&gt;.&lt;br /&gt;Il nostro obiettivo è di rendere dinamica la visualizzazione dei markers importandone le coordinate ed altre informazioni da un file esterno alla nostra pagina di visualizzazione della Google Map.&lt;br /&gt;In particolare, i dati che andremo a visualizzare sono stati precedentemente inclusi in un file &lt;a href="http://it.wikipedia.org/wiki/XML"&gt;XML&lt;/a&gt;. Non è il luogo adatto per disquisire sull'utilizzo di questo &lt;a href="http://xml.html.it/guide/lezione/1839/introduzione/"&gt;metalinguaggio&lt;/a&gt;, ci basti sapere che in un file &lt;em&gt;xml&lt;/em&gt; le informazioni sono contenute in particolari elementi detti &lt;a href="http://www.webmaster-risorse.com/xml/tag.asp"&gt;tags&lt;/a&gt;.&lt;br /&gt;Nel nostro esempio il file xml è costituito da un solo tag (&lt;em&gt;marker&lt;/em&gt;) con tre &lt;a href="http://www.webmaster-risorse.com/xml/attributi.asp"&gt;attributi&lt;/a&gt;, la latitudine (&lt;em&gt;lat&lt;/em&gt;), la longitudine (&lt;em&gt;long&lt;/em&gt;) e una breve descrizione (&lt;em&gt;descr&lt;/em&gt;). Il file si chiama &lt;a href="http://cirdan.ilbello.com/cirdanmaps/scuole.xml"&gt;scuole.xml&lt;/a&gt; ed è il seguente&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;markers&gt;&lt;br /&gt;&amp;lt;marker lat="44.111508" long="9.835831" descriz="Qui ho frequentato le scuole superiori"&gt;&lt;br /&gt;&amp;lt;marker lat="44.113902" long="9.834570" descriz="Qui ho frequentato le scuole elementari"&gt;&lt;br /&gt;&amp;lt;marker lat="44.113715" long="9.833441" descriz="Qui ho frequentato le scuole medie"&gt;&lt;br /&gt;&amp;lt;marker lat="44.111206" long="9.834749" descriz="Qui abitavo molti anni fa"&gt;&lt;br /&gt;&amp;lt;/markers&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Il vantaggio di questa soluzione diventa evidente nel momento in cui avessimo l'esigenza di aggiungere altri &lt;em&gt;markers&lt;/em&gt;. In quel caso, basterebbe inserire i nuovi dati a partire dalla penultima riga, rispettando la medesima sintassi, senza necessità di modificare la pagina web di visualizzazione della mappa.&lt;br /&gt;Per gestire il file XML e "passare" i dati alla nostra pagina web sono però necessari alcuni step:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;1. Caricare in memoria il contenuto del file&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Per fare ciò, utilizzeremo il metodo&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;GDownloadUrl("scuole.xml", function(data, responseCode));&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Il file &lt;em&gt;scuole.xml&lt;/em&gt; viene caricato nella variabile &lt;em&gt;data&lt;/em&gt;; in responseCode viene caricato con un codice di elaborazione il cui valore ci permette di capire se ci sono stati problemi nel caricamento (es. un file xml non valido o con errori nei dati) e quindi di gestire la cosa senza che l'elaborazione si interrompa (argomento che tralasciamo per ora per semplicità).&lt;/p&gt;&lt;p&gt;&lt;span style="color:#cc0000;"&gt;&lt;strong&gt;N.B.&lt;/strong&gt;&lt;/span&gt; E' necessario che il documento XML sia contenuto nel medesimo server che ospita il codice javascript e quindi la pagina che richiede la Google Map.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;2. Capire il tipo di documento contenuto nel file (XML)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;Affinchè il codice javascript "capisca" che il file caricato sia xml viene utilizzato il &lt;a href="http://it.wikipedia.org/wiki/Namespace"&gt;namespace&lt;/a&gt; GXml, che fornisce metodi statici per gestire documenti XML. Il metodo&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;GXml.parse(data);&lt;/div&gt;infatti, non è altro che un &lt;a href="http://xml.html.it/faq/leggi/1007/che-cose-un-parser-xml/"&gt;parser&lt;/a&gt; XML. &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;3. Gestire i dati in maniera corretta&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I dati vengono caricati sotto forma di stringa mentre le coordinate geografiche devono essere in formato numerico. La funzione&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;parseFloat()&lt;/div&gt;ha appunto come argomento la stringa corrispondente agli attributi &lt;em&gt;lat&lt;/em&gt; e &lt;em&gt;long&lt;/em&gt; e produce in uscita un numero in &lt;a href="http://it.wikipedia.org/wiki/Floating_point"&gt;floating point&lt;/a&gt;. &lt;p&gt;&lt;/p&gt;&lt;p&gt;Dopo tanto scrivere, passiamo alla visualizzazione del codice, opportunamente commentato per facilitarne la comprensione.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;&lt;br /&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;title&gt;Visualizzazione markers da file XML&amp;lt;/title&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2 &amp;amp;key=LAVOSTRAGOOGLEAPIKEY" type="text/javascript"&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;function initialize() {&lt;br /&gt;&lt;br /&gt;if (GBrowserIsCompatible()) {&lt;br /&gt;&lt;br /&gt;var map = new GMap2(document.getElementById("map_canvas"));&lt;br /&gt;map.addControl(new GSmallMapControl());&lt;br /&gt;map.addControl(new GMapTypeControl());&lt;br /&gt;&lt;br /&gt;//Aggiunge la scala&lt;br /&gt;map.addControl(new GScaleControl());&lt;br /&gt;&lt;br /&gt;//Centra la mappa in un punto particolare&lt;br /&gt;map.setCenter(new GLatLng(44.112909 , 9.835415), 16);&lt;br /&gt;&lt;br /&gt;GDownloadUrl("scuole.xml", function(data, responseCode) {&lt;br /&gt;&lt;br /&gt;var xml = GXml.parse(data);&lt;br /&gt;var markers = xml.documentElement.getElementsByTagName("marker");&lt;br /&gt;&lt;br /&gt;for (var i = 0; i &lt; markers.length; i++) {&lt;br /&gt;&lt;br /&gt;var punto = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("long")));&lt;br /&gt;&lt;br /&gt;var titolo = (markers[i].getAttribute("descriz"));&lt;br /&gt;map.addOverlay(new GMarker(punto, {title: titolo}));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/head&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body onload="initialize()" onunload="GUnload()"&gt;&lt;br /&gt;&amp;lt;div id="map_canvas" style="width: 500px; height: 400px"&gt;&amp;lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Il risultato lo potete apprezzare &lt;a href="http://cirdan.ilbello.com/cirdanmaps/esempio4.html"&gt;qui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Una volta capito questo meccanismo, nei prossimi post tenteremo di realizzare una applicazione ancora più raffinata. Invece di movimentare un file XML statico, potremmo infatti crearlo in maniera dinamica, prelevando ad esempio l'elenco delle coordinate e le descrizioni da un database.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-2412590262638013391?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/2412590262638013391/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/visualizzare-markers-contenuti-in-un.html#comment-form' title='4 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/2412590262638013391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/2412590262638013391'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/visualizzare-markers-contenuti-in-un.html' title='Visualizzare markers contenuti in un file XML'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-6316408415846270741</id><published>2009-01-14T23:18:00.000+01:00</published><updated>2009-01-15T09:51:02.869+01:00</updated><title type='text'>Overlay e markers su una Google Map: un primo esempio</title><content type='html'>Abbiamo imparato finora come inserire una &lt;a href="http://en.wikipedia.org/wiki/Google_map"&gt;Google Map&lt;/a&gt; nel proprio sito, centrata su specifiche &lt;a href="http://it.wikipedia.org/wiki/Coordinate_geografiche"&gt;coordinate geografiche&lt;/a&gt;. Abbiamo imparato come inserire alcuni controlli (le frecce di direzione, lo zoom, la scala) e una finestra di dialogo nel punto ove la mappa è centrata.&lt;br /&gt;L''esigenza successiva diventa quella di visualizzare sulla nostra mappa dei punti particolari.&lt;br /&gt;Secondo il codice di Google Maps, tutto ciò che può essere identificato da coordinate geografiche é definito &lt;em&gt;&lt;a href="http://code.google.com/intl/it/apis/maps/documentation/overlays.html#Overlays_overview"&gt;Overlay&lt;/a&gt;&lt;/em&gt;. Un particolare tipo di &lt;em&gt;Overlay&lt;/em&gt; è il &lt;em&gt;&lt;a href="http://code.google.com/intl/it/apis/maps/documentation/overlays.html#Markers"&gt;marker&lt;/a&gt;&lt;/em&gt;, cioè il singolo punto sistemato su una mappa. Altri tipi di &lt;em&gt;overlay&lt;/em&gt; sono ad esempio le &lt;em&gt;&lt;a href="http://code.google.com/intl/it/apis/maps/documentation/overlays.html#Polylines_Overview"&gt;polylines&lt;/a&gt;&lt;/em&gt; (insiemi di punti che formano una linea) e i &lt;em&gt;&lt;a href="http://code.google.com/intl/it/apis/maps/documentation/overlays.html#Polygons_Overview"&gt;polygons&lt;/a&gt;&lt;/em&gt; (poligoni). L'elenco non si esaurisce qui ma in questo post ci concentreremo solo sui primi.&lt;br /&gt;&lt;br /&gt;Nell'esempio che vi propongo, su una Google Map vengono visualizzati i markers relativi alle scuole che ho frequentato (elementari, medie, superiori). Al passaggio del mouse su ogni marker viene visualizzato il tipo di scuola.&lt;br /&gt;Come nell'esempio precedente, prima di cominciare abbiamo bisogno delle coordinate dei punti che vorremmo visualizzare. Ci potremmo affidare di nuovo a &lt;a href="http://www.mygeoposition.com/"&gt;MyGeoPosition.com&lt;/a&gt; oppure, giusto per segnalare altri siti di &lt;a href="http://en.wikipedia.org/wiki/Geocoding"&gt;geocoding&lt;/a&gt;, una alternativa diversa come &lt;a href="http://kmlcollection.googlepages.com/coordinate_click.html"&gt;questa&lt;/a&gt;. L'importante, lo ricordo, è che le coordinate siano in formato decimale.&lt;br /&gt;&lt;br /&gt;Le coordinate di una delle scuole mi serviranno anche per centrare la mappa, riutilizzo dunque il &lt;a href="http://it.wikipedia.org/wiki/Metodo_(programmazione)"&gt;metodo&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;div class="code"&gt;map.setCenter(new &lt;a href="http://code.google.com/intl/it/apis/maps/documentation/reference.html#GLatLng"&gt;GLatLng&lt;/a&gt;(&lt;em&gt;lat, long&lt;/em&gt;), &lt;em&gt;livellozoom&lt;/em&gt;);&lt;/div&gt;&lt;br /&gt;Per la visualizzazione del marker, invece, introduco il nuovo metodo&lt;br&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;a href="http://code.google.com/intl/it/apis/maps/documentation/reference.html#GMarker"&gt;GMarker&lt;/a&gt;(&lt;em&gt;coord&lt;/em&gt;, {title: "&lt;em&gt;string&lt;/em&gt;"});&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;dove &lt;em&gt;coord&lt;/em&gt; è il vettore bidimensionale delle coordinate, valorizzato attraverso la &lt;a href="http://it.wikipedia.org/wiki/Classe_(informatica)"&gt;classe&lt;/a&gt; GLatLng. &lt;em&gt;title&lt;/em&gt; è uno degli attributi opzionali di &lt;a href="http://code.google.com/intl/it/apis/maps/documentation/reference.html#GMarker"&gt;GMarker&lt;/a&gt;, e consente la visualizzazione di una stringa al passaggio del mouse sul marker.&lt;br /&gt;&lt;br /&gt;A questo punto abbiamo tutti gli elementi per finire il nostro lavoro. Il risultato lo potete apprezzare &lt;a href="http://cirdan.ilbello.com/cirdanmaps/esempio3.html"&gt;qui&lt;/a&gt; e  passiamo dunque a visualizzare il codice per intero:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;   &amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;    &amp;lt;head&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;title&gt;Visualizzazione markers su una Google Map &amp;lt;/title&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;&lt;br /&gt;     key=APIKEYCHEMIHADATOGOOGLE"&lt;br /&gt;&lt;br /&gt;      type="text/javascript"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;    function initialize() {&lt;br /&gt;&lt;br /&gt;      if (GBrowserIsCompatible()) {&lt;br /&gt;&lt;br /&gt;         //Visualizza mappa solo modalita' stradale&lt;br /&gt;        var map = new GMap2(document.getElementById("map_canvas"));&lt;br /&gt;&lt;br /&gt;        // ITIS G. Capellini&lt;br /&gt;        var center = new GLatLng(44.111508, 9.835831);&lt;br /&gt;&lt;br /&gt;       // Elementari Via Pascoli&lt;br /&gt;       var pin1 = new GLatLng(44.113902, 9.834570);&lt;br /&gt;&lt;br /&gt;      // Medie via Leopardi &lt;br /&gt;      var pin2 = new GLatLng(44.113715, 9.833441);   &lt;br /&gt;&lt;br /&gt;      map.setCenter(center, 16);&lt;br /&gt;&lt;br /&gt;       // L'opzione title di Gmarker fa apparire una stringa al&lt;br /&gt;          passaggio sul marker&lt;br /&gt;&lt;br /&gt;        var marker = new GMarker(center, {title: "Qui ho frequentato le &lt;br /&gt;                     superiori"});&lt;br /&gt;        map.addOverlay(marker);&lt;br /&gt;&lt;br /&gt;        var marker = new GMarker(pin1, {title: "Qui ho frequentato&lt;br /&gt;                     le elementari"});&lt;br /&gt;        map.addOverlay(marker);&lt;br /&gt;&lt;br /&gt;        var marker = new GMarker(pin2, {title: "Qui ho frequentato&lt;br /&gt;                     le medie"});&lt;br /&gt;        map.addOverlay(marker);&lt;br /&gt;&lt;br /&gt;        //Se voglio aggiungere altri markers basta dichiarare in alto&lt;br /&gt;          una nuova variabile (es. pin3) e copiare le due righe appena&lt;br /&gt;         sopra questo commento sostituendo il nome della variabile&lt;br /&gt;&lt;br /&gt;      //Aggiunge i controlli formato grande&lt;br /&gt;       map.addControl(new GLargeMapControl()); &lt;br /&gt;&lt;br /&gt;       //Aggiunge la scala&lt;br /&gt;       map.addControl(new GScaleControl());&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &amp;lt;/script&gt;&lt;br /&gt;  &amp;lt;/head&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;body onload="initialize()" onunload="GUnload()"&gt;&lt;br /&gt;    &amp;lt;div id="map_canvas" style="width: 550px; height: 450px"&gt;&amp;lt;/div&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nell'esempio che vi ho proposto esempio la visualizzazione dei markers è un po' rozza. Se dovessimo infatti aggiungere nuovi markers dovremmo necessariamente modificare il codice di cui sopra, che diventerebbe tra l'altro poco leggibile se dovessimo porre su una mappa numerosi markers.&lt;br /&gt;La visualizzazione statica dei markers è dunque un grosso limite, i cui rimedi saranno trattati nei post a venire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-6316408415846270741?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/6316408415846270741/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/overlay-e-markers-su-una-google-map-un.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6316408415846270741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6316408415846270741'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/overlay-e-markers-su-una-google-map-un.html' title='Overlay e markers su una Google Map: un primo esempio'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-6724019122080170873</id><published>2009-01-13T23:41:00.000+01:00</published><updated>2009-01-14T00:22:51.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='controlli'/><category scheme='http://www.blogger.com/atom/ns#' term='mappe'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='metodi'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>I primi controlli e metodi nell'utilizzo delle Google Maps</title><content type='html'>Cominciamo a fare qualche modifica sul file dell'articolo precedente per rendere ancora piu' utile il nostro lavoro.&lt;br /&gt;La mappa del post precedente non ci consentiva nè di muoverci nella mappa nè di zoomare attravero i classici comandi di Google Maps. Supponiamo di avere la necessità di inserire tali controlli. Supponiamo inoltre di avere l'esigenza di inserire nel nostro sito una mappa centrata su un particolare punto, inserendo in quello stesso punto una descrizione.&lt;br /&gt;Per quanto riguarda la centratura della mappa, si ricorre al metodo&lt;br&gt;&lt;br /&gt;&lt;div class="code"&gt;map.setCenter(new GLatLng(lat, long), livellozoom);&lt;/div&gt;&lt;br /&gt;Per fare ciò abbiamo bisogno di conoscere sia la latitudine che la longitudine (N.B. &lt;u&gt;in formato decimale&lt;/u&gt;, non in gradi) del punto ove andremo a centrare la mappa. A tale scopo o annotiamo i dati del nostro gps oppure utilizziamo applicazioni come &lt;a href="http://mygeoposition.com/"&gt;http://mygeoposition.com/&lt;/a&gt; .&lt;br /&gt;Per quanto riguarda i controlli, sarà sufficiente utilizzare i metodi&lt;br&gt;&lt;br /&gt;&lt;div class="code"&gt;map.addControl(new GMapTypeControl());&lt;br&gt;&lt;br&gt;&lt;br /&gt;map.addControl(new GSmallMapControl());&lt;br&gt;&lt;br /&gt;map.addControl(new GLargeMapControl());&lt;br&gt;&lt;br&gt;&lt;br /&gt;map.addControl(new GScaleControl());&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;il primo controllo permette di selezionare il tipo di mappa (Mappa, Satellite, Ibrida); il secondo e il terzo consentono di attivare la barra di navigazione (le frecce per spostarsi) e i pulsanti per lo zoom, nelle due versioni piccola e grande; il quarto permette di visualizzare la scala della nostra mappa.&lt;br /&gt;Infine, per quanto riguarda la finestra di dialogo, si utilizza il metodo&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;map.openInfoWindow(map.getCenter(), document.createTextNode("testodavisualizzare"));&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Il lavoro svolto finora lo potete trovare &lt;a href="http://cirdan.ilbello.com/cirdanmaps/esempio2.html"&gt;qui&lt;/a&gt;; segue il documento html completo.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt; &amp;lt;head&gt;&lt;br /&gt;  &amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;&lt;br /&gt;  &amp;lt;title&gt;Esempio 2&amp;lt;/title&gt;&lt;br /&gt;  &amp;lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&lt;br /&gt;&amp;amp;key=ABQIAAAAynaMdsZYAs5aITp8oGFoixTaBdm2rMFwTfjoALLN-mPT1dOPXBTTmmyWoK3&lt;br /&gt;otqrSo4SXBqg8UMWHOA" type="text/javascript"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;  //&lt;![CDATA[&lt;br /&gt;    function load() {&lt;br /&gt;      if (GBrowserIsCompatible()) {&lt;br /&gt;        var map = new GMap2(document.getElementById("map"));&lt;br /&gt;&lt;br /&gt;       // ***** Centro la mappa su Spezia livello di zoom 16&lt;br /&gt;       map.setCenter(new GLatLng(44.111206, 9.834749), 16);&lt;br /&gt;&lt;br /&gt;      // ***** Visualizza controllo - Zoom Piccolo&lt;br /&gt;      map.addControl(new GSmallMapControl());   &lt;br /&gt;&lt;br /&gt;      // ***** Visualizza controllo Tipo Mappa&lt;br /&gt;      map.addControl(new GMapTypeControl());&lt;br /&gt;&lt;br /&gt;      // ***** Visualizza la scala della mappa&lt;br /&gt;      map.addControl(new GScaleControl());&lt;br /&gt;&lt;br /&gt;     // ***** Apre finestra informativa&lt;br /&gt;     map.openInfoWindow(map.getCenter(),document.createTextNode("La casa dove sono  &lt;br /&gt;                  nato: Viale Italia 40, La Spezia"));&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    //]]&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body onload="load()" onunload="GUnload()"&gt;&lt;br /&gt;&amp;lt;div id="map" style="width:600px;height:400px"&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-6724019122080170873?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/6724019122080170873/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/i-primi-controlli-e-metodi-nellutilizzo.html#comment-form' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6724019122080170873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/6724019122080170873'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/i-primi-controlli-e-metodi-nellutilizzo.html' title='I primi controlli e metodi nell&apos;utilizzo delle Google Maps'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7716844805830212426.post-1488505128893346597</id><published>2009-01-10T22:50:00.000+01:00</published><updated>2009-01-14T08:46:45.962+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>Il BigBang ovvero: tutto comincia da qui</title><content type='html'>Più volte pungolato da &lt;a href="http://digitaladoptive.wordpress.com/"&gt;digitaladoptive&lt;/a&gt;, compagno di avventure telematiche ormai da qualche tempo, cominciamo questa nuova avventura, il cui scopo è avventurarsi nell'ancora misterioso mondo delle API, siano esse di &lt;a href="http://www.google.it/"&gt;Google&lt;/a&gt;, &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; o di altre "diavolerie" 2.0.&lt;br /&gt;Questo spazio voleva nascere come supporto, integrazione, approfondimento, completamento, di quanto trattato da digitaladoptive appunto nel suo nuovo blog &lt;a href="http://mashing-up.blogspot.com/"&gt;Mashing Up&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ma siccome è mia intenzione essere estremamente semplice e comprensibile, voglio cominciare davvero dalle basi, visto che è da fondamenta solide che nascono i grattacieli.&lt;br /&gt;&lt;br /&gt;Volendo cominciare dalle Google Maps API, cerchiamo di capire cosa sono e a che servono.&lt;br /&gt;Google non si limita a mettere a nostra disposizione una serie di mappe dinamiche (navigabili, cliccabili, ingrandibili e riducibili), ma ci dà la possibilità di includere (EMBED) porzioni di tali mappe (e delle informazioni in esse contenute) nel nostro personale sito Web attraverso il linguaggio di scripting &lt;a href="http://it.wikipedia.org/wiki/Javascript"&gt;Javascript&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Cosa serve per iniziare a usare le Google Maps API?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Uno spazio web&lt;/strong&gt;&lt;br /&gt;Per i nostri scopi uno spazio web gratuito va più che bene. Fate attenzione però che il servizio fornisca supporto PHP e MySQL, cose che ci serviranno più avanti. Non è mia intenzione fare pubblicità, ma visto che l'ho usato anche io suggerisco &lt;a href="http://www.ilbello.com/"&gt;http://www.ilbello.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Un client FTP&lt;br /&gt;&lt;/strong&gt;Anche di questo tipo di software ce ne sono decine di versioni con funzionalità più o meno diverse. Sempre nell'intenzione di non fare pubblicità, per iniziare vi suggerisco addirittura di non installare software ma di utilizzare &lt;a href="http://www.net2ftp.it/"&gt;http://www.net2ftp.it/&lt;/a&gt;, un client FTP che funziona direttamente da web&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Un account Google&lt;/strong&gt;&lt;br /&gt;Per utilizzare le mappe di Google sul proprio sito è necessaria una Google Map API key, richiedibile GRATUITAMENTE &lt;a href="http://code.google.com/intl/it/apis/maps/signup.html"&gt;qui&lt;/a&gt; previa iscrizione a Gmail (ancora non avete un account Gmail? Cosa aspettate?). Cliccate sulla casellina dove accettare i termini e le condizioni di Google e scrivete nello spazio successivo l'indirizzo del sito dove andrete ad includere la mappa&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;NOTA BENE!!&lt;/span&gt; Ogni chiave è valida per una e una sola directory all'interno di un dominio. Utilizzando una chiave API in una pagina del tipo &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;http://www.pippo.com/&lt;/span&gt;&lt;/strong&gt; , non potrete utilizzare la stessa chiave per includere una mappa in una pagina contenuta in &lt;strong&gt;&lt;span style="color:#3333ff;"&gt;http://www.pippo.com/cartella&lt;/span&gt;&lt;/strong&gt; . Fate molta attenzione, dunque. Avete sempre la possibilità di richiedere una nuova API key nel caso dovrete gestire Google Maps su più directory del vostro sito web.&lt;br /&gt;&lt;br /&gt;Google ci facilita davvero il compito poichè, oltre all'API key richiesta, verrà visualizzata una pagina di esempio, che contiene i primi basilari elementi per visualizzare la nostra mappa:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;pre&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;&lt;br /&gt;&amp;lt;title&gt;Google Maps JavaScript API Example&amp;lt;/title&gt;&lt;br /&gt;&amp;lt;script src="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;&lt;br /&gt;key=ABQIAAAAynaMdsZYAs5aITp8oGFoixRJHuyTOYtQsjTGz8OInkxDcZHO1RR_8HzINN3BOtSIuhhpB8eBaotMiQ"&lt;br /&gt;type="text/javascript"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;//&amp;lt;![CDATA[&lt;br /&gt;function load() {&lt;br /&gt;if (GBrowserIsCompatible()) {&lt;br /&gt;var map = new GMap2(document.getElementById("map"));&lt;br /&gt;map.setCenter(new GLatLng(37.4419, -122.1419), 13);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;//]]&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body onload="load()" onunload="GUnload()"&gt;&lt;br /&gt;&amp;lt;div id="map" style="width:500px;height:300px"&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Basterà dunque copiare il codice proposto e incollarlo in un qualunque editor di testo, per poi fare l'upload del file ottenuto, via FTP, nella cartella del nostro sito.&lt;br /&gt;&lt;a href="http://cirdan.ilbello.com/cirdanmaps/esempio1.html"&gt;Questo&lt;/a&gt; il risultato. Si tratta di una porzione di mappa dei dintorni di &lt;a href="http://it.wikipedia.org/wiki/Palo_Alto"&gt;Palo Alto&lt;/a&gt;, in &lt;a href="http://it.wikipedia.org/wiki/California"&gt;California&lt;/a&gt;; nel prossimo post cominceremo a lavorare sul codice per personalizzare un pochino la nostra mappa.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7716844805830212426-1488505128893346597?l=c-api-amoci.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-api-amoci.blogspot.com/feeds/1488505128893346597/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/il-bigbang-ovvero-tutto-comincia-da-qui.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/1488505128893346597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7716844805830212426/posts/default/1488505128893346597'/><link rel='alternate' type='text/html' href='http://c-api-amoci.blogspot.com/2009/01/il-bigbang-ovvero-tutto-comincia-da-qui.html' title='Il BigBang ovvero: tutto comincia da qui'/><author><name>Cirdan il Timoniere</name><uri>http://www.blogger.com/profile/17397008402601163498</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_ZVCrNJe2IPw/SWnwid6AlQI/AAAAAAAAAAM/AfrT-7pxXL4/S220/cirdan7.jpg'/></author><thr:total>0</thr:total></entry></feed>
