Javascript 如何为Google Maps V3中的所有标记创建单个事件处理程序?
我知道如果我在地图上有多个标记,并且我需要处理对它们的点击,我必须为每个标记设置一个处理程序,如下所示:Javascript 如何为Google Maps V3中的所有标记创建单个事件处理程序?,javascript,google-maps,google-maps-api-3,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
// ...
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
});
但是如果我有很多记号笔,它不会太重吗?我是否可以设置一个处理程序,并找出在其中单击了哪个标记?以我想要的方式进行操作是不可能的,这是真的。但我已经找到了一种方法,用另一种方法来做,这比每个标记都有一个处理程序要好得多。这对我来说应该是显而易见的,但事实并非如此:
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);
这是在javascript中调用函数时使用的隐式“This”上下文的一个很好的例子。