2.6 KiB
2.6 KiB
前端未提交改动说明
分支: main
状态: 工作区未提交,共 3 个文件
修改文件列表
| 文件 | 改动说明 |
|---|---|
src/components/map/controls/VehicleMovementControlRefactored.vue |
航班残留清理 + 诊断日志 |
src/components/map/controls/VehicleAnimationSystem.vue |
NaN 位置保护 |
dist.zip |
构建产物(二进制) |
一、VehicleAnimationSystem.vue — NaN 保护
问题: 车辆动画计算后位置可能出现 NaN,导致地图渲染异常。
修改:
- 动画位置计算后增加
isFinite()校验,若无效则回退到vehicles[id].position或targetPosition - 写回
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)。
合入注意事项
- 两个
.vue文件的改动可以直接合入 - 诊断日志需要在正式发布前移除或降级:
console.warn(">>> 版本已更新: 清理逻辑已启用")— 删除featureDiagTimer(每 5 秒的属性 dump)— 删除或注释掉cleanupTimer相关的console.warn可改为console.debug或删除
dist.zip是构建产物,建议npm run build重新生成后替换