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.
Caricare dati su una Google Map da un file XML
Pubblicato 20 Gennaio 2009 api , google maps 4 CommentiTags: API, cAPIamoci, google maps, javascript, marker, markers, xml



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?
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
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
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à