VUE3加载cesium,导入czml的星座后页面卡死BUG 修复

  • Vue3导入Cesium,使用 window.viewer代替viewer

  • 项目需求

    需要加载星座;2. 地球切到近景,对实体(非星座)需要点击弹出面板详情

  • 卡顿原因

    • 点击详情弹出面板,是通过监听MOUSE_MOVE事件,使用hanlder获取点击实体;在载入星座后,由于卫星数量几百颗导致handler时间过多卡死。
    json 复制代码
    const showPanelDetail = () => {
    handler?.setInputAction((event) => {
    //实体
    let pickedEntity = window.viewer.scene.pick(event.endPosition)
    
    if (
      Cesium.defined(pickedEntity) &&
      pickedEntity.id instanceof Cesium.Entity
    ) {
      detailPanelRef.value.isShowPanel = true
      Object.assign(detailPanelRef.value.screenPoint, event.endPosition)
      Object.assign(detailPanelRef.value.entityDetail, pickedEntity?.id?.info) //Object.assign才会动态变化
    }
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)

}

```

  • 解决方式
    • 加载星座的时候,移除handler
    • 生成handler的时候,移除星座
json 复制代码
const addAllSatellite = (satelliteName) => {
  if (handler) {
    handler.destroy()
  }
  let type = satelliteType.find((item) => item.name === satelliteName).type
  initCZMLSatellites(window.viewer, type) //加载星座
}
相关推荐
不爱学英文的码字机器24 分钟前
重塑 Web 性能:用 Rust 与 WASM 构建“零开销”图像处理器
前端·rust·wasm
浩星32 分钟前
react的框架UmiJs(五米)
前端·javascript·react.js
子醉3 小时前
推荐一种适合前端开发使用的解决本地跨域问题的办法
前端
Niyy_3 小时前
前端一个工程构建多个项目,记录一次工程搭建
前端·javascript
xiangxiongfly9154 小时前
CSS link标签
前端·css
岁月宁静5 小时前
AI 多模态全栈应用项目描述
前端·vue.js·node.js
nn_(nana)5 小时前
修改文件权限--- chmod ,vi/vim,查看文件内容,yum-软件包管理器,systemctl管理系统服务
前端
烛阴6 小时前
从零开始掌握C#核心:变量与数据类型
前端·c#
han_6 小时前
前端高频面试题之Vuex篇
前端·vue.js·面试