Загрузите массив маркеров из строки JSON. Строка JSON содержит расположение маркера и информацию, которая должна отображаться во всплывающем окне каждого маркера.Создайте массив маркеров в одном цикле и назначьте их разное всплывающее окно
У меня есть следующий код
function AddAllMarkers(markersJSON){
var tempArray = JSON.parse(markersJSON);
infoWindow = new google.maps.InfoWindow();
for(var i = 0; i < tempArray.Locations.length; i++){
var obj = tempArray.Locations[i];
var point = new google.maps.LatLng(obj.Latitude, obj.Longitude);
var contentString = <!--CONTENT STRING GETS SET HERE PER MARKER-->;
var markerTemp = new google.maps.Marker({
position: point,
icon:obj.Icon
});
google.maps.event.addListener(markerTemp, 'click', function() {
infoWindow.close();
infoWindow = new google.maps.InfoWindow();
infoWindow.setContent(contentString);
infoWindow.open(map, this);
});
markerArray.push(markerTemp);
}
}
Когда эта функция вызывается, я загружаю все маркера правильно, но все маркеры показывают всплывающее окно последних маркеров загруженных. Что я делаю не так? Я попытался переместить объявление infoWindow, но либо это не решает проблему, либо вызывает одновременное открытие нескольких воздушных шаров.
Как я могу это решить?
похож на [Google Maps JS API v3 - Простой Multiple Маркер Пример] (http://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example) (использует функцию закрытия, а не атрибуты для решения проблемы) – geocodezip