Ciao a tutti,
tanto per cambiare ho un problema. Avrei la necessità di popolare una mappa di google con dei dati prelevati da un database mysql. ho provato a seguire un tutorial che sembrava arrivare ad una soluzione (almeno dall'esempio) ma non mi ha portato a nulla.
Praticamente questo tutorial mi fa:
Riesco tranquillamente a generare il file XML (e infatti se apro generaxml.php questo mi fa l'elenco dei dati estrapolati dal DB), però quando provo ad aprire il file relativo alla mappa non ottengo nulla.
Di seguito il codice di generaxml.php
questo è lo script inserito trai tag di header della pagina:
e questo è l'evento inserito nel tag body
però non mi funziona. Mi sapreste dire dov'è l'errore che ci stò sbattendo sopra da 2 giorni?
tanto per cambiare ho un problema. Avrei la necessità di popolare una mappa di google con dei dati prelevati da un database mysql. ho provato a seguire un tutorial che sembrava arrivare ad una soluzione (almeno dall'esempio) ma non mi ha portato a nulla.
Praticamente questo tutorial mi fa:
- Creare un file generaxml.php che estrapola i dati dal db e li riordina in un file XML;
- Mi fa creare una pagina HTML in cui vado a "leggere" il file XML e mostro i punti sulla mappa;
Riesco tranquillamente a generare il file XML (e infatti se apro generaxml.php questo mi fa l'elenco dei dati estrapolati dal DB), però quando provo ad aprire il file relativo alla mappa non ottengo nulla.
Di seguito il codice di generaxml.php
PHP:
<?php
// richiede i dati di accesso contenuti in credenziali.php
require("./conf/db.php");
//Sostituisce alcuni caratteri speciali con il relativo codice entita'
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);
return $xmlStr;
}
// Si connette al database
apri();
// Seleziona tutte le righe della tabella con i markers
$query = "SELECT * FROM point WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Query invalida: ' . mysql_error());
}
header("Content-type: text/xml");
// Genera il nodo principale del file XML
echo '<markers>';
// Ciclo che crea il resto del documento XML sulla base dei dati della tabella
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<marker ';
echo 'denom="' . parseToXML($row['nome']) . '" ';
echo 'indirizzo="' . parseToXML($row['indirizzo']) . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'long="' . $row['long'] . '" ';
echo 'tipomarker="' . $row['tipomarker'] . '" ';
echo '/>';
}
// Genera il tag di chiusura del nodo principale
echo '</markers>';
?>
questo è lo script inserito trai tag di header della pagina:
Codice:
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=La mia chiave di google generata sul sito apposito"></script>
<script type="text/javascript">
//<![CDATA[
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("./gpoint.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("nome");
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, nome, indirizzo, tipomarker);
map.addOverlay(marker);
}
});
}
}
function createMarker(point, nome, indirizzo, tipomarker) {
var marker = new GMarker(point);
var html = "("+tipomarker+")<br/><b>" + denom + "</b> <br/>" + indirizzo;
GEvent.addListener(marker, 'mouseover', function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
//]]>
</script>
e questo è l'evento inserito nel tag body
Codice:
<body onload="load()" onunload="GUnload()">
però non mi funziona. Mi sapreste dire dov'è l'errore che ci stò sbattendo sopra da 2 giorni?