1
我正在使用Google Maps API的小型web應用程序。JavaScript中的函數調用
在一個點上,我想放置標記並附加事件監聽器。
//initialization of infowindow and markers
var points = [];
var infowindow = new google.maps.InfoWindow({
content: "1234"
});
function addInfoWindow(point){
infowindow.setContent(point.position + " " + point.title),
infowindow.open(map, point);
}
這裏的問題,當我啓動標誌物
//initialize markers
{% for marker in mapMarkers %}
points[{{ marker.id }}] = new google.maps.Marker({
position: new google.maps.LatLng({{ marker.geometry.y }},
{{ marker.geometry.x }}),
map: map,
title: '{{ marker.name }}',
clickable: true
});
//add event llistener for infowindow
points[{{ marker.id }}].content = "abc"
//look here!!
google.maps.event.addListener(points[{{ marker.id }}], 'click',
addInfoWindow(points[{{ marker.id }}])
);
{% endfor %}
它會立即從第一標記顯示信息窗口。其他標記被放置,但點擊它們從不產生任何改變。
雖然如果我這樣做
google.maps.event.addListener(points[{{ marker.id }}], 'click',
function(){
addInfoWindow(points[{{ marker.id }}])
});
東西工作完全正常,只有信息窗口被點擊標記時出現。
我的問題:爲什麼需要使用
function(){}而不是直接使用addInfoWindow。我想這可能是addInfoWindow調用全局變量的函數調用問題,但如果是這種情況,顯示的infowindow應顯示來自最後一個標記實例化的信息?
因爲'addInfoWindow'需要參數。如果您只是使用函數引用,它將不會收到任何參數。 –