os cuento un poco. Tengo una funcion php, con la que mediante ajax obtengo todas las pozas de una base de datos.
Estas las guardo en un array en Javascript y posteriormente tengo un html con unos inputs y lo filtro para que solo me cree los marker de aquellas pozas que han pasado el filtro.
Esto lo hace bien.
Pero cuando a cada MArker le asigno mediante addListener, que muestre un infoWindow cuando haga click sobre el marker. Esto no lo hace, y cada infoWindow sale en el marker que le da la gana :S
adjunto la parte del codigo, a ver si veis donde esta el fallo.
Tambien si veis alguna burrada programando..los comentarios seran bien recibidos.
Que soy nuevo en esto y no se si abuso quizas mucho de los bucles for...
Código:
  
Un saludo y gracias! 
var $MAPA = null;
var $MARCAS = new Array();
var $INFOWINDOW = new google.maps.InfoWindow();                
var $ZONAS = new Array;
var $POZAS = new Array;
var $CENTRO = new google.maps.LatLng(36.38736, -5.95047);
function cerrarInfo()
{
    $INFOWINDOW.close();
}
function abrirInfo(marca,contenido)
{
    $INFOWINDOW.setContent(contenido);
    $INFOWINDOW.open($MAPA,marca);    
}
function obtenerPozas(){
    $.ajax({
        url: 'http://localhost/imareal/ajax/obtenerPozas/',
        dataType: 'json',
        success: function(pozas)
        {
            $.each(pozas, function(i, poza){
                $POZAS.push(poza);
            }); 
        }
    });
}
function mostrarPozas(zona,fisios,anyos)
{
    borrarMarcas();
    var pozas_zona = new Array;
    var pozas_fisio = new Array;
    var pozas_anyo = new Array;
    
    if(zona==='-1'){
        pozas_zona = $POZAS;
    }else{
        for(i=0;i<$POZAS.length;i++){
            poza = $POZAS[i];
            if(poza.nomZona === zona){
                pozas_zona.push(poza);
            }
        }    
    }
    
    if(fisios){
        for(i=0;i<pozas_zona.length;i++){
            poza = pozas_zona[i];
            if(jQuery.inArray(poza.tipo,fisios) >= '0'){
                pozas_fisio.push(poza);
            }
        }
    }else
    {
        pozas_fisio = pozas_zona;
    }
    
    if(anyos){
        for(i=0;i<pozas_fisio.length;i++)
       {
            poza = pozas_fisio[i];
            if(jQuery.inArray(poza.anyo,anyos) >= '0'){
                pozas_anyo.push(poza);
            }
        }
    }else
    {
        pozas_anyo = pozas_fisio;
    }
    
    for(i=0;i<pozas_anyo.length;i++)
    {
        poza = pozas_anyo[i];
        var descrp = '<div><ul>'+
                        '<li><span>POZA: </span> '+poza.codPoza+'</li>'+
                        '<li><span>FISIOGRAFÍA: </span> '+poza.tipo+'</li>'+
                        '<li><span>FECHA: </span> '+poza.mes+'/'+poza.anyo+'</li>'
                    '</ul></div>';
        
        var pos = new google.maps.LatLng(poza.latitud,poza.longitud);
        
        var marca = new google.maps.Marker({
            position: pos,
            map: $MAPA,
            title: poza.codPoza
        });
        google.maps.event.addListener(marca, 'click', function(){
            abrirInfo(marca,descrp);
        });
        $MARCAS[i] = marca;
    }
}
function borrarMarcas(){
    for(i=0;i<$MARCAS.length;i++)
    {
        $MARCAS[i].setMap(null);
    }
    $MARCAS = [];
}
  
$(document).ready(function(){
    crearMapa();
    obtenerPozas();
    $('.zonas').click(function(){centrarMapa($(this).attr('href'));return false;});
    
   $('#zona,#fisios,#anyos').change(function(){
        mostrarPozas($('#zona :selected').val(),$('#fisios').val(),$('#anyos').val());
        });
    
});
 

