如何为Google Maps V3中的所有标记创建单个事件处理程序? [英] How do I make a single event handler for all markers in Google Maps V3?

查看:81
本文介绍了如何为Google Maps V3中的所有标记创建单个事件处理程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  // ... 
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){
//我的侦听器处理程序
});

但是如果我有很多标记,它会不会太重?我可以以某种方式设置一个处理程序,并找出它内部点击了哪个标记? 解决方案

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

  function markerHandler(event){
window .console.log(本);
//'this'变量是被点击的标记
}

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);


I understand that if I have multiple markers on a map, and I need to handle clicks on them, I have to set up a handler for each marker like so:

// ...
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
});

But if I have a lot of markers, wouldn't it bee too heavy? Can I somehow set one handler and figure out which marker was clicked inside it?

解决方案

To do it the way that I wanted to do is impossible, that's true. But I have found a way to do it another way which is a lot better than to have a handler per each marker. It should have been obvious to me, but it hasn't been:

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);

这篇关于如何为Google Maps V3中的所有标记创建单个事件处理程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆