Ответ 1
Сначала измените условие цикла на i < arraylng.length
. Сейчас он не захватывает последний элемент вашего массива.
Переменные JavaScript работают с областью функций, поэтому вам нужно вызвать функцию для каждого прослушивателя маркеров, чтобы создать правильные ссылки на переменные. Вы можете использовать анонимную функцию , как показано здесь, или определить функцию для создания прослушивателя кликов:
Несколько информационных окон:
function makeInfoWindowEvent(map, infowindow, marker) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
}
Скорее всего, вы не захотите открывать одновременно больше одного InfoWindow, потому что раздражать нужно нажать на кнопку закрытия x. Затем вам понадобится только один объект InfoWindow и установите контент при нажатии маркера:
Single InfoWindow:
...
var infowindow = new google.maps.InfoWindow();
for (var i = 0; i < arraylng.length-1; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(arraylng[i], arraylat[i]),
map: map
});
makeInfoWindowEvent(map, infowindow, "test" + i, marker);
markers.push(marker);
}
}
function makeInfoWindowEvent(map, infowindow, contentString, marker) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map, marker);
});
}