Ver Mensaje Individual
  #14 (permalink)  
Antiguo 04/07/2013, 04:18
carlosuc99
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 10 meses
Puntos: 5
Exclamación Respuesta: Google maps y for PHP

Creo que he descubierto algo importante. Yo aseguraría que esto me funcionaba, por lo menos hasta las infowindow en otro proyecto. Rebusqué el archivo y vi que la única diferencia entre los dos era el query. Fijaos esto funciona:

Código PHP:
Ver original
  1. <?php
  2.  include('db_login.php');
  3.      
  4.       $connection = mysql_connect($db_host, $db_username, $db_password);
  5.       if (!$connection){
  6.       die ("Eror connecting database: <br/>". mysql_error());
  7.       }
  8.    
  9.       $db_select = mysql_select_db($db_database);
  10.       if (!$db_select){
  11.       die ("Database Error: <br/>". mysql_error());
  12.       }
  13. $query = mysql_query("SELECT * FROM airports2");
  14.  
  15. ?>
  16.     <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  17. <style type="text/css">
  18.   html { height: 100% }
  19.   body { height: 100%; margin: 0px; padding: 0px }
  20.   #map_canvas { height: 100% }
  21. </style>
  22. <script type="text/javascript"
  23.     src="http://maps.google.com/maps/api/js?sensor=false&amp;language=es">
  24. </script>
  25. <script type="text/javascript">
  26.  
  27.  
  28. window.onload = function () {
  29.   var options = {
  30.     zoom: 5,
  31.     center: new google.maps.LatLng(40.84706, -2.944336),
  32.     mapTypeId: google.maps.MapTypeId.ROADMAP
  33.   };
  34.  
  35.   map = new google.maps.Map(document.getElementById('map_canvas'), options);
  36.  
  37.  
  38.   <?php
  39.         for($i = 0; $i < mysql_num_rows($query); $i++){
  40.             $icao = mysql_result($query, $i, 'icao');
  41.             $lat = mysql_result($query, $i, 'latitude');
  42.             $lon = mysql_result($query, $i, 'longitude');
  43.             $city = mysql_result($query, $i, 'city');
  44.         ?>
  45.   var image = 'http://mapicons.nicolasmollet.com/wp-content/uploads/mapicons/shape-default/color-d22328/shapecolor-color/shadow-1/border-dark/symbolstyle-white/symbolshadowstyle-dark/gradient-no/airport.png';
  46.   var latLonCenter = new google.maps.LatLng(<?php echo $lat; ?>, <?php echo $lon; ?>);
  47.   var Airport1 = '<h3 align="center" style="font-family:Arial, Helvetica, sans-serif"><?php echo $icao; ?> - <?php echo $city; ?></h3>';
  48.   marker = new google.maps.Marker({
  49.     position: latLonCenter,
  50.     map: map,
  51.     draggable: false,
  52.     icon: image,
  53.     title: '<?php echo $icao; ?> - <?php echo $city; ?>',
  54.     Airport1: Airport1
  55.   });
  56.  
  57.     var infowindow = new google.maps.InfoWindow({
  58.     content: Airport1
  59.     });
  60.  
  61.  
  62.     google.maps.event.addListener(marker, 'click', function () {
  63.       var n = 1;
  64.       var infowindow = new google.maps.InfoWindow({
  65.         content: '<h3 align="center" style="font-family:Arial, Helvetica, sans-serif"><?php echo $icao; ?> - <?php echo $city; ?></h3>',
  66.         maxWidth: 320,  //Ancho de ventana infowindows en px
  67.         zIndex: n // para que el último infowindows se superponga
  68.       });
  69.      
  70.       infowindow.setContent(this.Airport1);
  71.       infowindow.setZIndex(n++);  // superpone el último infowindows
  72.       infowindow.open(map, this);
  73.     });
  74.  
  75. <?php } ?>
  76.  
  77. }
  78. </script>
  79.   </head>
  80.  
  81.   <body>
  82.     <center><div id="map_canvas" style="width:650px; height:360px;"></div></center>
  83.   </body>

Pero si uso el query de este proyecto:

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM routes");
  2. //Codigo que no varia y ...
  3. //Comienza el for y a continuación:
  4. $icao = mysql_result($query, $i, 'from');
  5.             $query = mysql_query("SELECT * FROM airports WHERE icao='$icao'");
  6.             $latitude = mysql_result($query, 0, 'latitude');
  7.             $longitude = mysql_result($query, 0, 'longitude');
  8.             $city = mysql_result($query, 0, 'city');

La diferencia es clara. En el primero obtengo todos los datos de una tabla y en la segunda cojo un dato de una y me busco más información de este dato en otra.

Pues bien, en el primero todo OK, pero en el segundo sólo se me muestra la primera entrada en la tabla. POR QUÉ?????

PD: He hecho una prueba. Puse un echo al final del for para ver cual era el último icao que cogía y para mi sorpresa solo coge el primero. Así que no llega al segundo por eso no lo muestra. Puede que no repita el for, pero es algo que no entiendo. Por qué la primera funciona y la segunda no??

PD II:Soy estúpido????? El error está claro dos querys con el mismo nombre. Voy a ver si con esto se solucionan las polylines.

Última edición por carlosuc99; 04/07/2013 a las 04:33