What to build: 将中央 MapCanvas 作为驾驶舱常驻组件挂载。切换一级模式或面板展开状态时,地图实例不销毁、不重建。
Blocked by: 01
Status: resolved Labels: ready-for-agent
MapCanvas 在 /cockpit 中只创建一次。已关闭。 中央一张图改为「常驻宿主组件 + 地图服务层持有实例生命周期」。
改动:
src/modules/cockpit/services/mapService.js —— 实例生命周期的唯一所有者:mountMap(host) 幂等(已挂载直接返回既有实例)、resizeMap() 尺寸上报、unmountMap() 只在离开 /cockpit 时销毁,并暴露 getLifecycleStats() 供断言。不依赖 DOM 与 Vue,可脱离浏览器直接测。src/modules/cockpit/components/MapCanvas.vue(替换原 MapPlaceholder.vue):常驻宿主要素;挂载时调 mountMap,用 ResizeObserver 上报尺寸,卸载时调 unmountMap;宿主带 data-map-instance 供走查观测。MapCanvas;地图仍是「一张图铺满主体背景 + 左右两栏浮于其上」。验证证据:
verify/t01-panel-catalog.mjs 新增一节):重复挂载返回同一实例、created 全程为 1、重复挂载不替换宿主、销毁计一次且之后无实例、未挂载时尺寸上报被忽略、销毁后重挂是新实例(id 不复用)—— 全通过。data-map-instance 仍为初始值、全页只有一个地图实例。本票验收清单只要求「常驻 / 生命周期」,未要求引擎渲染,因此未安装 Cesium,宿主内仍是临时影像底图。票 06 的调研曾把「创建 Cesium Viewer」写给票 02,与票面验收清单不一致 —— 已提请维护者定夺归属。