ОБНОВЛЕНО
Вы звоните
infowindow.open(map,marker);
внутри итерации jQuery.each, поэтому, я думаю, она будет вызывать последний элемент в итерации.
Измените свой код, чтобы получить его внутри итерации jQuery.each.
var curItem = 1;
google.maps.event.addListener(aMarker, "click", function(idx, theContent) {
return function() {
alert(idx); //Should print 1 marker1, 2 for marker 2, to show it's ok.
//Your stuff...
if (infowindow) {
infowindow.close(map,marker);
}
infowindow.setContent(theContent);
infowindow.open(map,marker);
}
} (curItem++, contentString)
);
Когда вы видите «return function ()», я использую закрытие javascript . Я только что использовал это закрытие для других вещей. Я избавился от других предыдущих вариантов в моем предыдущем ответе.