airport-qingdao-vue3/前端未提交改动说明.md
2026-06-29 17:00:06 +08:00

2.6 KiB
Raw Blame History

前端未提交改动说明

分支: main
状态: 工作区未提交,共 3 个文件


修改文件列表

文件 改动说明
src/components/map/controls/VehicleMovementControlRefactored.vue 航班残留清理 + 诊断日志
src/components/map/controls/VehicleAnimationSystem.vue NaN 位置保护
dist.zip 构建产物(二进制)

一、VehicleAnimationSystem.vue — NaN 保护

问题: 车辆动画计算后位置可能出现 NaN导致地图渲染异常。

修改:

  1. 动画位置计算后增加 isFinite() 校验,若无效则回退到 vehicles[id].positiontargetPosition
  2. 写回 vehicles[id].position 前同样做 isFinite() 校验,避免污染数据源

二、VehicleMovementControlRefactored.vue — 航班残留清理 + 诊断日志

1. 冲突状态守卫

clearConflictStatus()markConflictStatus() 增加 if (!v.isAircraft) return; 确保只清理/标记航班,不误操作其他车辆。

2. 路线清理逻辑统一

  • 禁用了 updateAircraftRouteFromGeoJson()updateAircraftRoute() 中各自的 5 分钟独立定时器(注释掉)
  • 禁用了 updateVehiclePosition() 中的 tryAutoRemoveAircraftRouteByPosition() 调用
  • 统一改为由新增的 cleanupTimer 集中处理

3. 新增 cleanupTimer每 60 秒)

定时扫描所有 vehicle清理超过 60 秒未更新的航班:

遍历 vehicles → 只处理 isAircraft → age > 60s →
  1. 移除标签 (labelSystem)
  2. 移除地图 Feature (vehicleSource)
  3. 移除航线 (aircraftRoutes)
  4. 删除 vehicles 数据

解决航班图标在地图上残留不消失的问题。

4. 新增 lastUpdateTime 记录

创建/更新 Feature 时写入 lastUpdateTime: Date.now(),供 cleanupTimer 判断过期。

5. 诊断日志(上线前需移除)

  • <script setup> 顶部打印版本标记 >>> 版本已更新: 清理逻辑已启用
  • Feature 创建/丢失/隐藏时打印诊断信息
  • 新增 featureDiagTimer(每 5 秒)遍历所有 Feature 输出属性

6. 组件卸载清理

onUnmounted 中增加 clearInterval(cleanupTimer)clearInterval(featureDiagTimer)


合入注意事项

  1. 两个 .vue 文件的改动可以直接合入
  2. 诊断日志需要在正式发布前移除或降级
    • console.warn(">>> 版本已更新: 清理逻辑已启用") — 删除
    • featureDiagTimer(每 5 秒的属性 dump— 删除或注释掉
    • cleanupTimer 相关的 console.warn 可改为 console.debug 或删除
  3. dist.zip 是构建产物,建议 npm run build 重新生成后替换