我有一个可用的Google地图JavaScript部分,但我曾经遇到问题。
我曾经的问题是只有一个信息窗口出现了,即最后一个。我在另一个堆栈线程上找到了解决方案,它起作用了。但我无法真正搞清楚为什么。我对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)有什么作用?
在
addListener
的末尾添加(content)
会发生什么?因为据我所见,在setContent
属性中已经设置了内容。
谢谢!