处理重叠图层点击事件的方式有两种,可以根据需求选择不同的方式。
第一种方式是阻止事件冒泡
在第一个图层绑定的事件方法中使用e.preventDefault()
阻止事件冒泡,在另一个图层中使用e.defaultPrevented
判断点击事件冒泡。
需要注意的是,事件冒泡与图层的前后顺序无关,仅与图层绑定事件的先后顺序有关!
map.on('click', 'layerName', e => {
e.preventDefault()
console.log('图层一')
console.log('点击的要素', e.features[0])
})
map.on('click', 'layerName2', e => {
if(e.defaultPrevented)return;
console.log('图层二')
console.log('点击的要素', e.features[0])
})
第二种方式是监听全局点击事件
map.on('click', (e) => {
const { point} = e;
const clickedFeatures = map.queryRenderedFeatures(point); // 查询点击处的要素
console.log('最上面的图层 ', clickedFeatures[0]);
})