Acá voy explicando:
Código PHP:
<?php
require("phpsqlajax_dbinfo.php");
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Opens a connection to a MySQL server
$connection=mysql_connect (localhost, $username);
if (!$connection) { die('Not connected : ' . mysql_error());}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM markers WHERE 1";
$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("id",$row['id']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
$newnode->setAttribute("name",$row['name']);
$newnode->setAttribute("address", $row['address']);
$newnode->setAttribute("type", $row['type']);
$newnode->setAttribute("distance", $row['distance']);
}
echo $dom->saveXML();
?>
Por otro lado tengo esto:
Código PHP:
<?php
require("phpsqlajax_dbinfo.php");
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("distance");
$parnode = $dom->appendChild($node);
// Opens a connection to a MySQL server
$connection=mysql_connect (localhost, $username);
if (!$connection) { die('Not connected : ' . mysql_error());}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT lat1,lng1,lat2,lng2 FROM distancia";
$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("distanc");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("lat1",$row['lat1']);
$newnode->setAttribute("lng1", $row['lng1']);
$newnode->setAttribute("lat2", $row['lat2']);
$newnode->setAttribute("lng2",$row['lng2']);
}
echo $dom->saveXML();
?>
Ahora bien, hasta acá lo que funciona, si se fijan ambos códigos se parecen mucho y funcionan, a continuación colo el código donde esta la falla que aun no veo:
Código HTML:
<script src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxTPZYElJSBeBUeMSX5xXgq6lLjHthSAk20WnZ_iuuzhMt60X_ukms-AUg" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ var iconBlue = new GIcon(); iconBlue.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png'; iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; iconBlue.iconSize = new GSize(3, 5); iconBlue.shadowSize = new GSize(6, 5); iconBlue.iconAnchor = new GPoint(2, 5); iconBlue.infoWindowAnchor = new GPoint(3, 1); var iconRed = new GIcon(); iconRed.image = 'http://labs.google.com/ridefinder/images/mm_20_red.png'; iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; iconRed.iconSize = new GSize(12, 20); iconRed.shadowSize = new GSize(22, 20); iconRed.iconAnchor = new GPoint(6, 20); iconRed.infoWindowAnchor = new GPoint(5, 1); var customIcons = []; customIcons["Cuadricula"] = iconBlue; customIcons["Subestacion"] = iconRed; function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(10.900, -63.800), 11); GDownloadUrl("phpsqlajax_genxml3.php", function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("name"); var address = markers[i].getAttribute("address"); var type = markers[i].getAttribute("type"); var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), (parseFloat(markers[i].getAttribute("lng")))); var marker = createMarker(point, name, address, type); map.addOverlay(marker); } }); } } function createMarker(point, name, address, type) { var marker = new GMarker(point, customIcons[type]); var html = "<b>" + "Nombre: "+ type +" "+ name + "</b> <br/>" + address +" KVA" +"</b> <br/>"; GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); }); return marker; } GDownloadUrl("distancia.php", function (dat) { var xml = GXml.parse(dat); var distance = xml.documentElement.getElementsByTagName("distanc"); for (var i = 0; i < distance.length; i++) { var point = new GLatLng(parseFloat(distance[i].getAttribute("lat1")), (parseFloat(distance[i].getAttribute("lng1")))); var point2 = new GLatLng(parseFloat(distance[i].getAttribute("lat2")), (parseFloat(distance[i].getAttribute("lng2")))); var polyline = new GPolyline([new GLatLng(point) , new GLatLng(point2)]); map.addOverlay(polyline); poly.setMap(map); return distanc; }});
Fijense que hay 2 GDownloadUrl, el que llama marcadores y el que llama los puntos para crear una linea.
Cabe explicar que esto llama a google maps, carga unos puntos que están almacenados en la BD y debería crear lineas rectas entre esos puntos, eso también esta en una bd, se que el código funciona porque cuando coloco coordenadas directamente me crea la linea, el problema esta en recibir el archivo xml desde las paginas que tienen las llamadas a la BD, lo extraño del asunto es que la función GDownloadUrl("phpsqlajax_genxml3.php", function(data) funciona bien, recibe el xml con los puntos de la bd y los grafica en google maps, pero la funcion GDownloadUrl("distancia.php", function (dat) aunque es casi similar no esta recibiendo el xml, probe con un echo de las variables y con eso certifique que ese xml no esta llegando.
Si alguien es capaz de resolver esto, se le agradece, tengo tiempo tras este problema ya.