Bing Maps v8如何分别处理地图与图钉图层的右键点击事件
解决方法
这个问题是Bing Maps的事件冒泡机制导致的:图层上触发的右键事件默认会向上冒泡到地图实例,因此点击图钉时两个回调都会被触发。
你可以直接在图钉图层的右键事件回调中,将事件对象的handled属性设为true,就能原生阻断事件向上冒泡到地图层,无需使用定时器。
修改后的代码如下:
let map = new Microsoft.Maps.Map(/*element reference*/, {/*some options*/}); let pinLayer = new Microsoft.Maps.Layer(); Microsoft.Maps.Events.addHandler(pinLayer, 'rightclick', (e: any) => { console.log("pin clicked"); // 原生阻止事件向上冒泡到地图实例 e.handled = true; }); map.layers.insert(pinLayer); Microsoft.Maps.Events.addHandler(map, 'rightclick', (e: any) => console.log("map clicked"));
handled是Bing Maps事件体系内置的属性,设置为true后,上层容器就不会再接收到本次事件通知,完全符合需求。
内容的提问来源于stack exchange,提问作者spectacularbob
相关产品推荐
相关产品推荐

