maptalks / maptalks.three

A maptalks layer to render with three.js.
https://deyihu.github.io/maptalks.three.website/
MIT License
575 stars 131 forks source link

问下0.28.1之后的版本threeLayer层级问题 #552

Closed shaokeke closed 2 years ago

shaokeke commented 2 years ago

0.28.1之后的版本点击mesh,mesh.click先响应,map.click后响应,怎么改变这个顺序

deyihu commented 2 years ago

是的,加了冒泡机制了

shaokeke commented 2 years ago

但是我想让map先click,mesh后click,不太想改代码了,有没有办法

deyihu commented 2 years ago

@shaokeke 库里是不会适配你这个需求的,因为冒泡机制这个是合理的(核心库也是这么设计的),因为有的用户的需求是当点击了mesh,不触发map的click事件,以前的版本地图事件先触发,属于当时设计不合理导致的,所以针对你的需求,你需要在mesh的click事件里坐下promise的延迟等处理


//粗略代码如下
function MapIsClicked(){
   return new Promise((resolve,reject)=>{
    setTimeout(()=>{
       if(mapClick){
          resolve()
       }
    },100)
 })
}

mesh.on('click',(e)=>{
  MapIsClicked().then(.....)
});
shaokeke commented 2 years ago

这样的话,还是得改下代码了,感谢回复