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) //加载星座
}
相关推荐
走到天涯海角10 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!10 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰11 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi12 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen13 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马14 小时前
AI源码分析:拆解模型底层实现逻辑
前端
IT_陈寒14 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端
乘风gg14 小时前
DeepSeek V4.1 Flash 来了,明天中午 Flash 降价 60%
前端·ai编程·claude
默_笙15 小时前
❗ 给金鱼装记忆(上):从白板到笔记本,AI 的短期记忆生存指南
前端·javascript
酷酷的逗逗乐15 小时前
前端转 Agent 开发 · 第五节:Memory 会话记忆
前端·程序员