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) //加载星座
}
相关推荐
赖龙2 小时前
pnpm vs npm
前端·npm·node.js
学如逆水,不进则退3 小时前
在线免费音频剪辑:NBTools 可视化波形裁剪 MP3/WAV,本地处理免上传
前端·音视频
Mh3 小时前
虚拟滚动真的比普通滚动性能更好吗?
前端·javascript·性能优化
pe7er3 小时前
React + Ant Design 中的 IME (输入法合成)安全输入组件
前端
Super 含4 小时前
Android 启动优化(二):TTID、TTFD 与 Macrobenchmark 启动性能测量
前端
Python私教4 小时前
别急着加 llms.txt:企业官网面向 AI 搜索的工程清单
前端·人工智能·seo
东方小月4 小时前
从零开发一个 Coding Agent(十三):实现安全的 read 文件读取工具
前端·人工智能·全栈
东方小月5 小时前
从零开发一个 Coding Agent(十二):实现版本化 JSONL 与真实 CLI 入口
前端·设计模式·前端框架
FL16238631296 小时前
室内易燃物识别易燃评估室内易燃程度识别分割数据集labelme格式1015张85类别
java·服务器·前端
用户059540174466 小时前
把 AI 长期记忆去重测试从 20 分钟压到 40 秒,重复率从 18% 干到 1.5%
前端·css