Caricare dati su una Google Map da un file XML

Segnalo il nuovo articolo che ho pubblicato sull’altro mio blog cAPIamoci; riguarda la visualizzazione su una Google Map di coordinate importate da un file XML. Ricordandovi che i contenuti sono leggibili anche da chi non ha grosse competenze tecniche ma ha voglia di capire qualcosa di più sulle API di Google Maps, auguro buona lettura.

4 Risposte a “Caricare dati su una Google Map da un file XML”


  1. 1 Viola Maiese 27 Marzo 2009 alle 12:33 pm

    Salve, sto facendo una tesi su google maps.
    Devo caricare dei dati nella mappa presi da un file xml che si ricarica da un database.
    Il mio problema è che nn riesco ad aggiornare la pagina xml.
    C’è una soluzione?

  2. 2 Cirdan il Timoniere 27 Marzo 2009 alle 1:22 pm

    Grazie Viola per avere letto il mio articolo. Non è chiaro il tuo problema. Se hai già creato la tabella del database, sarà uno script php, richiamato da una pagina html attraverso la funzione GDownloadUrl che leggerà quesi dati e li trasformerà in un output xml, a sua volta interpretato tramite la funzione GXml.parse.

    Fai riferimento agli articoli del mio altro blog:

    http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con.html

    http://c-api-amoci.blogspot.com/2009/01/caricare-markers-da-un-database-con_31.html

    Ciao e grazie

  3. 3 Viola Maiese 27 Marzo 2009 alle 7:17 pm

    Ciao.
    In pratica il mio progetto è molto simile a quello nei link che mi ha segnalato e funziona abbastanza bene. La differenza è che il mio database lo riempio con una funzione che genera lat e lon ogni 2 minuti(quindi non ho un database già pieno ma si riempie man mano), poi i dati del database li prelevo con la stessa funzione dell’articolo che produce xml. Dalla mappa html, poi, richiamo il documento xml che si è generato e mi visualizza i punti solo se aggiorno manualmente il file xml.
    Il mio problema è che la mappa si aggiorna ogni 2 minuti e mi visualizza sempre gli stessi punti anche se nel database ne ho inseriti altri perchè il documento xml che viene generato non si aggiorna da solo e mi mostra sempre gli stessi dati a meno che non faccio l’aggiornamento della pagina con F5.
    Ho provato a mettere un comando per il refresh ma non funziona.
    Non so proprio come fare.

    Grazie

  4. 4 vincentand 3 Giugno 2009 alle 10:39 am

    Ciao,
    bellissimi e chiarissimi gli articoli che ho seguito passo passo.
    Vorrei fare un passo avanti, partendo cioè da un menu a tendina, passando un parametro al file creaxml.php e visualizzando sulla mappa i marker relativi alla selezione effettuata.
    Il problema è che da menu a selezione riesco a generare l’xml relativo alla selezione.
    Riesco a visualizzare una mappa con i marker a partire da un file xml,.
    Non riesco a combinare le 2 cose insieme!!!
    —————————————————
    Ho un file menu_sel.html che contiene un menu a tendina nel quale l’utente sceglie un parametro e cliccando il tasto “visualizza” richiama un file creaxml.php passandogli il parametro scelto alla query.
    Infatti quando clicco visualizza, si visualizza il risultato della query (in particolare viene generato a video il risultato del file xml relativo alla selezione effettuata).

    Il problema è che ho un altro file gmap.htm che produce dei marker sulla mappa di google a partire dal file creaxml.php: il problema è che non so come integrarlo in modo che questo file htm possa essere lanciato direttamente dal file menu_sel.html iniziale.
    ———————————————–
    Insomma vorrei che dalla maschera inziale menu si scegliesse il parametro e si potesse lanciare la mappa con visualizzati i marker prodotti dal file xml, relativi alla selezione effettuata.
    ———————————————–
    Spero di essere stato chiaro………

    faccio l’esempio dei files a blocchi:
    menu.html

    menu tendina
    e passa parametro “selezione”

    ———————
    creaxml.php
    saveXML();
    ?>
    ————————
    gmap. htm

    GDownloadUrl(“creaxml.php”, function(data) {
    crea markers dal file creaxml.php

    —————–
    allego ora i 3 sorgenti:
    menu_sel.html

    interrogazione dBase

    Selezione dati dal database

    Seleziona un id:

    firenze
    pistoia
    pisa

    —————————
    creaxml.php
    createElement(“markers”);
    $parnode = $dom->appendChild($node);

    // Si connette al database
    $connection= mysql_connect (‘localhost’, ‘root’, ”) or die(‘Non connesso : ‘ . mysql_error());
    $db_selected = mysql_select_db(‘mappa’, $connection) or die (‘database non selezionato : ‘ . mysql_error());

    // Seleziona tutte le righe della tabella con i markers
    $seltipo = $_POST['seltipo'];
    $query = “SELECT * FROM markers WHERE id=’$seltipo’”;
    $result = mysql_query($query);
    if (!$result) {
    die(‘Invalid query: ‘ . mysql_error());
    }

    header(“Content-type: text/xml”);

    // Iterate through the rows, adding XML nodes for each

    while ($row = @mysql_fetch_assoc($result)){
    // ADD TO XML DOCUMENT NODE
    $node = $dom->createElement(“marker”);
    $newnode = $parnode->appendChild($node);

    $newnode->setAttribute(“name”,$row['denom']);
    $newnode->setAttribute(“address”, $row['indirizzo']);
    $newnode->setAttribute(“lat”, $row['lat']);
    $newnode->setAttribute(“long”, $row['long']);
    $newnode->setAttribute(“type”, $row['tipomarker']);

    }

    echo $dom->saveXML();

    ?>
    ————————-
    gmap.htm

    Visualizzazione markers su Google Map tramite MySQL e PHP

    function load() {
    if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById(“map”));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(44.0750963, 10.700323), 8);

    GDownloadUrl(“creaxml.php”, function(data) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName(“marker”) ;
    for (var i = 0; i < markers.length; i++) {
    var denom = markers[i].getAttribute("denom");
    var indirizzo = markers[i].getAttribute("indirizzo");
    var tipomarker = markers[i].getAttribute("tipomarker");
    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
    parseFloat(markers[i].getAttribute("long")));
    var marker = createMarker(point, denom, indirizzo, tipomarker);
    map.addOverlay(marker);
    }
    });
    }
    }

    function createMarker(point, denom) {
    var marker = new GMarker(point);

    GEvent.addListener(marker, 'mouseover', function() {
    marker.openInfoWindowHtml(denom);
    });
    return marker;
    }

    ———————

    grazie della disponibilità


Lascia un commento




Creative Commons License
Questo/a opera è pubblicato sotto una Licenza Creative Commons.

Addthis

AddThis Social Bookmark Button

del.icio.us

Flickr Photos

2009-08-26_0930 ponza

2009-08-26_0832 levanzo

More Photos

My last tweets

Errore: Verificare che l'account Twitter è public.