Hola,
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:
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());
});
});
Un saludo y gracias!