如何在Google Maps V3中为所有标记创建单个事件处理程序?

4

我明白如果我在地图上有多个标记,并且需要处理它们的点击事件,我必须为每个标记设置一个处理程序,如下所示:

// ...
var marker = new google.maps.Marker({position: new google.maps.LatLng(55, 37)});
marker.setMap(map);
var listener = google.maps.event.addListener(marker, 'click', function(event){
    // my listener handler here
});

但是如果我有很多标记,它们不会太重吗?我能否设置一个处理程序并在其中确定点击了哪个标记?

1个回答

6

按照我想做的方式是不可能的,这是真的。但我已经找到了另一种比每个标记点都有一个处理程序更好的方法。这应该对我来说很明显,但却没有。

function markerHandler(event){
    window.console.log(this);
    // 'this' variable is the marker that has been clicked
}

var marker = new google.maps.Marker({position: new google.maps.LatLng(55, 37)});
marker.setMap(map);

var listener = google.maps.event.addListener(marker, 'click', markerHandler);

1
这是一个很好的例子,展示了在JavaScript中调用函数时使用隐式“this”上下文的方式。 - Richard Levasseur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接