В настоящее время я использую следующий код для размещения нескольких маркеров на карте Google, используя их API.
Проблема, с которой я столкнулась, заключается в том, что несколько инфоокна не работают (отображается только последний).
На SO есть множество вопросов, таких как мой. На самом деле, это вопрос: -)
Просто пример: Попытка связать несколько InfoWindows с несколькими маркерами на карте Google и с ошибкой
Решение моей проблемы довольно просто: просто приложите прослушиватель кликов к (анонимной) функции.
Однако я не понимаю, почему мое решение не работает (сохранение маркеров и infowindows в массивах вместо одной переменной).
var markers = [];
var infowindows = [];
// add shops or malls
for (var key in data.markers) {
if (data.markers.hasOwnProperty(key)) {
infowindows[key] = new google.maps.InfoWindow({
content: data.markers[key].infowindow
});
markers[key] = new google.maps.Marker({
position: new google.maps.LatLng(data.markers[key].location.lat, data.markers[key].location.lng),
map: map,
flat: true,
title: data.markers[key].name,
draggable: false
});
var iconFile = 'http://maps.google.com/mapfiles/ms/icons/'+marker_color+'-dot.png';
markers[key].setIcon(iconFile);
google.maps.event.addListener(markers[key], 'click', function() {
infowindows[key].open(map, markers[key]);
});
}
}
Итак... Я не хочу, чтобы получить решение, как заставить его работать с некоторой функцией, чтобы заключить слушателя (хотя он должен работать, еще не протестировал его, но будет), но я хочу знать, причина, почему это не сработает, если я добавлю маркеры и infowindows в массивы.