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) //加载星座
}
相关推荐
爱勇宝5 小时前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
冬奇Lab5 小时前
每日一个开源项目(第143篇):page-agent - 纯 JS 的网页 GUI Agent,无需截图、无需插件、无需后端
前端·人工智能·agent
IT_陈寒10 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
追逐时光者11 小时前
别再满网找零散工具了,腾讯 QQ 浏览器这个“帮小忙”工具箱真能省时间
前端·后端
如果超人不会飞11 小时前
脉络清晰的业务演进:TinyVue Timeline 时间线组件全方位实战指南
vue.js
如果超人不会飞11 小时前
从扁平到立体:掌握 TinyVue Grid 树形表格的高级实战指南
vue.js
Asmewill13 小时前
grep&curl命令学习笔记
前端
stringwu13 小时前
Flutter 开发必备:MVI 架构的高效实现指南
前端·flutter
用户21366100357214 小时前
Vue2组件化开发与父子通信
前端·vue.js
Momo__15 小时前
TypeScript satisfies 操作符——比 as 更安全的类型守门员
前端·typescript