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

Igo*_*yev 2 javascript google-maps google-maps-api-3

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

// ...
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
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我有很多标记,它会不会太重?我能以某种方式设置一个处理程序并找出在其中单击的标记吗?

Igo*_*yev 5

要按照我想做的方式做到这一点是不可能的,那是真的.但我找到了另一种方法,比每个标记都有一个处理程序要好得多.它应该是显而易见的,但它不是:

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);
Run Code Online (Sandbox Code Playgroud)