Моя проблема в том, что все созданные информационные окна имеют одинаковое содержимое (последний объект массива). Мне кажется, что ни один из ответов не работает для меня.
function addMapMarkers(data) {
removeMarkers();
for(i=0; i<data.length; i++){
var location = {lat: + data[i].koordinatLatLng[0], lng: + data[i].koordinatLatLng[1]};
var marker = new google.maps.Marker({
position: location,
map: map,
clickable: true
});
marker.info = new google.maps.InfoWindow({
content: "Navn: " + data[i].navn
});
google.maps.event.addListener(marker, 'click', function() {
marker.info.open(map, this);
});
map.markers.push(marker);
};
};
вы должны использовать закрытие
function addMapMarkers(data) {
var addListenerOnPoint = function(actMark, actNavn){
$('.gm-style-iw').prev('div').remove();
var actContent = '<div><strong>' +actNome +
'</strong><br/>' + actDescrizione + '<div>';
var aInfowindow = new google.maps.InfoWindow({
content: "Navn: " + actNavn;
});
actMark.addListener('click', function() {
aInfowindow.open(map, actMark);
});
}
removeMarkers();
for(i=0; i<data.length; i++){
var location = {lat: + data[i].koordinatLatLng[0], lng: + data[i].koordinatLatLng[1]};
var marker = new google.maps.Marker({
position: location,
map: map,
clickable: true
});
addListenerOnPoint(marker,data[i].navn);
map.markers.push(marker);
};
};
Или, если вы не хотите использовать больше замыканий, вы можете просто использовать ключевое слово let
let marker = new google.maps.Marker({
position: location,
map: map,
clickable: true
})