У меня есть рабочий раздел javascript для Google Maps, у меня была проблема.
Теперь проблема была в том, что появился только один infowindow, последний. Я нашел решение в другом потоке стека, которое получилось. Но я не мог понять, почему. Я новичок в Javascript, поэтому я надеялся, что кто-то сможет объяснить мне, что изменилось и как.
Вот рабочий код:
function setMarkers(map, locations){
for(var i = 0; i < locations.length; i++){
var marker = locations[i];
var latLng = new google.maps.LatLng(locations[i][1], locations[i][2]);
var content = locations[i][0];
var infowindow = new google.maps.InfoWindow();
marker = new google.maps.Marker({
position:latLng,
map: map
});
google.maps.event.addListener(marker, 'click', function(content){
return function(){
infowindow.setContent(content);
infowindow.open(map, this);
}
}(content));
}
}
Вот исходный сломанный код (я вставляю только то, что изменилось):
google.maps.event.addListener(marker, 'click', function(){
infowindow.setContent(content);
infowindow.open(map, marker);
});
Теперь, что я хотел бы знать, если вы будете такими добрыми, это:
-
какая функция возвращает return fn, а
-
что добавляет добавленный
(content)
в концеaddListener
(}(content));)
, поскольку, насколько я вижу, контент уже установлен в свойствеsetContent
.
Благодарственные!