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) //加载星座
}
相关推荐
沛沛rh456 分钟前
React 学习笔记:State、hook —— 组件的记忆
前端·javascript·react.js
0和1的舞者8 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
web小白成长日记8 小时前
在Vue样式中使用JavaScript 变量(CSS 变量注入)
前端·javascript·css·vue.js
QT 小鲜肉8 小时前
【Linux命令大全】001.文件管理之which命令(实操篇)
linux·运维·服务器·前端·chrome·笔记
C_心欲无痕8 小时前
react - useImperativeHandle让子组件“暴露方法”给父组件调用
前端·javascript·react.js
su_079 小时前
Bug悬案侦破大会
bug
BullSmall10 小时前
支持离线配置修改及删除操作的实现方案
前端
全栈前端老曹10 小时前
【前端路由】Vue Router 嵌套路由 - 配置父子级路由、命名视图、动态路径匹配
前端·javascript·vue.js·node.js·ecmascript·vue-router·前端路由
EndingCoder10 小时前
安装和设置 TypeScript 开发环境
前端·javascript·typescript
gjc59211 小时前
MySQL隐蔽 BUG:组合条件查询无故返回空集?深度排查与规避方案
android·数据库·mysql·bug