Ver Mensaje Individual
  #14 (permalink)  
Antiguo 02/08/2012, 08:23
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar mapa de rutas haciendo clic en un link

Ambos suponemos lo mismo

Cita:
Iniciado por Bullet Ver Mensaje
... supongo que tiene que ver con la generacion del XML..
Doy por hecho (es el primer paso) que el archivo XML que debería leer el javascrip de tu página HTML (me refiero a la que me enviabas ayer), existe y en la ruta indicada.

Dado que el mapa te muestra sin los marcadores, se ha de comprobar paso a paso, sobre el javascript de la página HTML.

Partimos de la misma cabecera con el archivo que te indicaba para comprobar el XML y el Javascrip. Te muestro con mi archivo downloadxml.js, que después veremos si es necesario (jQuery no lo precisa pero no es el caso) Si nos sobra, tampoco molestará y lo veremos al final.
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  5.     <title>Google Maps AJAX + MySQL/PHP Example</title>
  6.     <script type="text/javascript" src="http://www.digitaleando.com/mundogeo/js/downloadxml.js"></script>
  7.     <script src="https://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxTPZYElJSBeBUeMSX5xXgq6lLjHthSAk20WnZ_iuuzhMt60X_ukms-AUg" type="text/javascript"></script>

Ve insertado, por cada sección del javascript (el que sigue automáticamente), algo que yo utilizo permanentemente para comprobar cada parte, si entra en la función y si la variable o el documento están bien conformados.
Código Javascript:
Ver original
  1. function load() {
  2.       if (GBrowserIsCompatible()) {
  3.         var map = new GMap2(document.getElementById("map"));
  4.         map.addControl(new GSmallMapControl());
  5.         map.addControl(new GMapTypeControl());
  6.         map.setCenter(new GLatLng(10.466666666666667, -64.18333333333334), 13);
  7.  
  8.         GDownloadUrl("phpsqlajax_genxml2.php", function(data) {
  9.           var xml = GXml.parse(data);
  10.           var markers = xml.documentElement.getElementsByTagName("marker");
  11.     alert ('OK');
  12.     alert (xml);
  13.           for (var i = 0; i < markers.length; i++) {
  14.             var name = markers[i].getAttribute("crno");
  15.             var address = markers[i].getAttribute("fecha");
  16.             var type = markers[i].getAttribute("even");
  17.             var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
  18.                                     parseFloat(markers[i].getAttribute("long")));
  19.             var marker = createMarker(point, name, address, type);
  20.             map.addOverlay(marker);
  21.           }
  22.         });
  23.       }
  24.     }

Te deberían salir dos alert seguidos. Uno con el OK (es texto que hemos puesto pero también nos indica que la función entra) y el segundo con [object XMLDocument] o algo parecido. Ello demuestra que el XML, que en realidad lo invocamos como phpsqlajax_genxml2.php (archivo PHP) existe y llega a la función. Si no aparece el segundo alert, es que la ruta de acceso está mal, o no existe el archivo.

Si mál no recuerdo se generaba a partir de phpsqlajax_dbinfo.php del que se hacían las correcciones de ( > < " etc. ) para leerlo

Superada esta fase, pasamos a una segunda comprobación. Cambiamos la posición de nuestros alert:
Código Javascript:
Ver original
  1. GDownloadUrl("phpsqlajax_genxml2.php", function(data) {
  2.           var xml = GXml.parse(data);
  3.           var markers = xml.documentElement.getElementsByTagName("marker");
  4.           for (var i = 0; i < markers.length; i++) {
  5.             var name = markers[i].getAttribute("crno");
  6.             var address = markers[i].getAttribute("fecha");
  7.             var type = markers[i].getAttribute("even");
  8.             var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
  9.                                     parseFloat(markers[i].getAttribute("long")));
  10.             var marker = createMarker(point, name, address, type);
  11.     alert ('OK');
  12.     alert (name);
  13.             map.addOverlay(marker);
  14.           }
  15.         });
  16.       }
  17.     }
Ahora, después del OK el segundo alert nos transcribe el "name" del XML y lo repetirá por el for tantas veces como names, address o markers tengas. Si no están definidos, saltarán solamente los OK, tantas veces como puntos tengas.

Puedes ir cambiando el alert (name); por alert (address);, alert (type); ... para comprobar que todo esté bien.

Y seguimos en contacto