木子屋 Dnawo's BLOG

百度地图点击Marker同时触发Map的click事件解决方法

👤 dnawo 📅 2020-06-13 👁 8171 👍 0 💬 0 🔄 来源:本站原创
在页面上添加个百度地图,地图上添加了一个Marker,并且给Map和Marker都添加了click事件处理程序:

// 添加地图
var map = new BMap.Map("allmap");
map.centerAndZoom(new BMap.Point(120.128132,30.228835), 13);
map.addEventListener("click", function(){
  alert("map");
});
// 添加标注点
var marker = new BMap.Marker(new BMap.Point(120.140421,30.222657));
marker.addEventListener("click", function(){
   alert("marker");
});
map.addOverlay(marker);

测试发现了问题:点击Marker时,不仅触发了Marker的click事件处理程序,还同时触发了Map的click事件处理程序,怎么解决这个问题呢?

翻阅百度地图开放平台《Javascript API》,Map对象click事件参数为"{type, target, point, pixel, overlay}",利用overlay参数,我们只需在Map处理程序增加判断如果当前位置有覆盖物则不执行后续程序即可:

map.addEventListener("click", function([color=Red]e[/color]){
  [color=Red]if(e.overlay){
    return; // 存在覆盖物退出
  }[/color]
  alert("map");
});

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 百度地图应用密钥AK不被其他网站非法调用的设置方法 下一篇 → ASP.NET接收AjAx+FormData传送的文件实现文件上…