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()); }); });