В вашем коде вы статически устанавливаете содержимое информационного окна при загрузке с помощью
var infowindow = new google.maps.InfoWindow({
content: contentString
});
Затем, когда вы нажимаете на свои маркеры, вы просто открываете это информационное окно
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
, это будет отображать то жесодержание для каждого маркера, вы не хотите этого.
что вы хотите сделать, это создать только одно информационное окно без содержимого (до цикла с маркером).затем при нажатии на маркер прикрепите содержимое к информационному окну ... затем откройте информационное окно.Это сохранит строки кода и автоматически закроет информационное окно.
перед созданием маркеров (с циклом) добавьте это
infowindow = new google.maps.InfoWindow();
в код маркера и добавьте вызов infowindow.setContent
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});