Существует очень простое решение вашей проблемы, заключающееся в том, чтобы поместить код цикла в функцию. Ваша проблема заключается в том, что вы перезаписываете переменную marker
, поэтому при обращении к ней в событии щелчка используется последняя версия этой переменной, которая является последним добавленным маркером.
Итак, когда вы помещаете его в функцию, переменная находится в отдельном пространстве имен и поэтому не перезаписывается. Другими словами, это должно работать:
for (var i = 0; i < 8; i++) {
createMarker(i);
}
function createMarker(i) {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(lat, lng),
icon: '/static/images/iconsets/gmap/iconb' + (i+1) + '.png',
});
var infowindow = new google.maps.InfoWindow({
content: 'test string'
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
}