Problema For en Mapa de Google Maps

Iniciado por carlosuc99, 10 Noviembre 2012, 12:47 PM

0 Miembros y 1 Visitante están viendo este tema.

carlosuc99

Buenas tengo este código:

var Destinos = {
      autozoom: true,
      zoom: 5,
      center: new google.maps.LatLng(40.84706, -2.944336),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), Destinos);
       
        <?php
        
for($i 0$i mysql_num_rows($query); $i++){
        
$lat mysql_result($query$i'Lat');
$lon mysql_result($query$i'Lon');
$icao mysql_result($query$i'ICAO');
$city mysql_result($query$i'City');
?>

       
        var Airport1 = new google.maps.InfoWindow({
        content: '<h3 align="center" style="font-family:Arial, Helvetica, sans-serif"><?php echo $icao?> - <?php echo $city?></h3>'
        });
       
       

        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';
        var myLatLng = new google.maps.LatLng(<?php echo $lat?>, <?php echo $lon?>);
        var Airport = new google.maps.Marker({
        position: myLatLng,
        map: map,
        icon: image,
        title:"<?php echo $icao?> - <?php echo $city?>"
       
        });
       
google.maps.event.addListener(Airport, 'click', function(){
  Airport1.open(map, Airport);
});
 
<?php  
 
}
?>

}


El problema es que el InfoWindow del Google Maps sólo me lo muestra en la última entrada de la tabla independientemente de en que marcador pulse. Ej: Tenemos 3 Ciudades: Vigo, Madrid y Barcelona (en la db están colocadas en ese ordén) si yo pulso en Vigo se me abre el InfoWindow de Barcelona, si pulso en Madrid lo mismo y si pulso en Barcelona lo mismo.

‭lipman

Claro que solo se te ve la última entrada  ;D Has enfocado tu programa.

Fíjate en el bucle que haces en PHP. Le dices a las mismas variables todo el rato que consigan un nuevo valor, por lo que leen toda la tabla, pero al final solo queda el último. Por si no me explico bien, imagina que tengo una matriz con los números del 1 al 100 ordenados, y luego hago esto:

Código (php-brief) [Seleccionar]
foreach($matriz as $valor)
$mivalor = $valor


Recorro toda la matriz, pero al final $mivalor vale el último valor, porque lo he ido sobreescribiendo con nuevos datos hasta llegar al último.

Ahora, por otra parte, no sé si el objetivo de tu mapa es tener varios infowindows y varios markers. En tal caso, tendrás que crear más, porque solo has puesto uno.

En conclusión, tu programa te coge efectivamente el último valor de la tabla y crea un solo marker, infowindow y listener.

Un saludo!