for(i=0; i<locations.length; i++) { var position = new google.maps.LatLng(locations[i][2], locations[i][3]); var marker = new google.maps.Marker({ position: position, map: map, }); google.maps.event.addListener(marker, 'click', (function(marker, i) { return function() { infowindow.setContent(locations[i][1]); infowindow.setOptions({maxWidth: 200}); infowindow.open(map, marker); } }) (marker, i)); Markers[locations[i][4]] = marker; }Tengo un mapa que tiene múltiples marcadores con ventanas de información. Mi objetivo es actualizar la ventana de información del marcador, pero no pude encontrar una solución.
Si está tratando de almacenar i en el cierre, puede hacerlo así: Demo JsFiddle
for (let i = 0; i < locations.length; i++) { let position = new google.maps.LatLng(locations[i][1], locations[i][2]); let marker = new google.maps.Marker({ position: position, map: map, title: locations[i][0] }); google.maps.event.addListener(marker, 'click', function (event) { let content = `<b>${locations[i][0]} </b><br> ${locations[i][3]}<br> Position: ${event.latLng.lat()}, ${event.latLng.lng()}`; infowindow.setContent(content); infowindow.setOptions({ maxWidth: 200 }); infowindow.open(map, marker); }); } O puede obtener la posición del objeto de evento event.latLng.lat() y obtener la ubicación usándolo.
O puede tener una ventana de información separada para cada marcador .