У меня возникли проблемы с реализацией некоторых данных в infowindow для динамических маркеров, которые я делаю с некоторыми геодезическими методами.info windows для каждого маркера google maps
function initMap(arlat, arlon, arname, artel, ardesc, aradd, arithmisi) {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: {
lat: 37.58,
lng: 23.43
}
});
var iconBase = 'http://sourtouki.gr/';
for (j = 0; j < arithmisi; j++) {
var contentString = '<div id="content">' +
'<div id="siteNotice">' +
'</div>' +
arname[j] +
'<div id="bodyContent">' +
ardesc[j] + "<br>" + aradd[j] + "<br>" + artel[j] + "<br>" +
'</div>' +
'</div>';
var marker = new google.maps.Marker({
position: {
lat: arlat[j],
lng: arlon[j]
},
map: map,
icon: iconBase + 'sourtoukilogo.png',
title: arname[j]
});
}
var infowindow = new google.maps.InfoWindow({
content: contentString
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
}
Таким образом, с приведенным выше кодом я нажимаю некоторые данные, которые у меня есть из некоторых таблиц на карту. Маркеры создаются в местах, где они должны быть, но всякий раз, когда я нажимаю на маркер, он открывается только один. Он загружает 17 маркеров, но единственная открытая инфоиндустрия - это первая запись, независимо от того, какой маркер я нажимаю. Также заголовок каждого маркера является правильным.
UPDATE У меня есть 17 записей на этой карте, 17 geopoints (лат, LNG), 17 наименований, 17description и т.д. Так с кодом выше я получить все geoipoints и я положил маркеры на правильные позиции в карту. И я хочу, когда я нажимаю на маркер, чтобы взять имя и адрес и отобразить его в infowindow. Но я думаю, что я где-то не так в цикле for. Хотя я беру все данные так, как они должны быть, каждый геосайт имеет правильное имя и т. Д., Но всякий раз, когда я нажимаю маркер, только 1-я запись открывает инфо-окно, скажем, что я нажимаю 3-й маркер на карте, 1-й инфо-окно будет open, также случается, если я нажимаю 12-й маркер. Любая идея, почему это происходит?
UPDATE 2
function initMap(arlat, arlon, arname, artel, ardesc, aradd, arithmisi) {
// console.log(arlat.length + arlon.lenght);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 6,
center: {
lat: 37.58,
lng: 23.43
}
});
var iconBase = 'http://sourtouki.gr/';
infowindow = new google.maps.InfoWindow();
for (j = 0; j < arithmisi; j++) {
var marker = new google.maps.Marker({
position: {
lat: arlat[j],
lng: arlon[j]
},
map: map,
icon: iconBase + 'sourtoukilogo.png',
title: arname[j]
});
var contentString = '<div id="content">' +
'<div id="siteNotice">' +
'</div>' +
arname[j] +
'<div id="bodyContent">' +
ardesc[j] + "<br>" + aradd[j] + "<br>" + artel[j] + "<br>" +
'</div>' +
'</div>';
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,this);
});
}
}
На 2 обновления я сделать пустой InfoWindow вне для цикла и после того, как я называю содержимое внутри и теперь она открывает все infowindows но имеет то же содержание внутри.
Общая информация Я пробовал много ответов в других вопросах здесь, в stackoverflow, и никто не исправил работу для моего дела, если бы кто-то мог помочь, я был бы благодарен!
извините за недоразумение ваша проблема. что означает «Он загружает 17 маркеров»? Все ли данные в 17 маркерах загружаются в один маркер в первой записи? –
@HermanNz Я отредактирую свой вопрос, чтобы лучше объяснить –
Возможный дубликат [API JS API для Google Maps v3 - Пример простого множественного маркера] (http://stackoverflow.com/questions/3059044/google-maps-js-api-v3- simple-multiple-marker-example) – geocodezip