Actualmente estoy usando el siguiente código para colocar varios marcadores en un mapa de Google usando su API.Agregar múltiples marcadores con infowindows (Google Maps API)
El problema que estoy teniendo es que varias ventanas de información no funcionan (solo muestra la última).
Hay un montón de preguntas como la mía aquí en SO. En realidad hacen que un chingo de preguntas :-)
Sólo un ejemplo: Trying to bind multiple InfoWindows to multiple Markers on a Google Map and failing
La solución a mi problema es un poco fácil: basta con encerrar el detector de clics a una función (anónimo).
Sin embargo, lo que no entiendo es por qué mi solución no está funcionando (guardando los marcadores e infowindows en matrices en lugar de solo una variable).
var markers = [];
var infowindows = [];
// add shops or malls
for (var key in data.markers) {
if (data.markers.hasOwnProperty(key)) {
infowindows[key] = new google.maps.InfoWindow({
content: data.markers[key].infowindow
});
markers[key] = new google.maps.Marker({
position: new google.maps.LatLng(data.markers[key].location.lat, data.markers[key].location.lng),
map: map,
flat: true,
title: data.markers[key].name,
draggable: false
});
var iconFile = 'http://maps.google.com/mapfiles/ms/icons/'+marker_color+'-dot.png';
markers[key].setIcon(iconFile);
google.maps.event.addListener(markers[key], 'click', function() {
infowindows[key].open(map, markers[key]);
});
}
}
Así que ... no lo que para obtener la solución de cómo conseguir que funcione con alguna función para encerrar al oyente (aunque debe trabajar, no han probado todavía, pero lo hará), pero Quiero saber el motivo por el que no funcionaría si agrego los marcadores y las ventanas de información a las matrices.
estoy tratando de esta manera, pero tengo una advertencia jshint "No haga las funciones dentro de un bucle". Si tomo al oyente fuera de loop obtengo el error "marker used out of scope". ¿Cómo puedo evitarlo? – aitor