You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.5 KiB
5.5 KiB
监控页全球默认视角 + 地图点位重设计
日期:2026-08-25
确认:2026-08-27
范围:laic-frontend 实时监控地图体验
状态:已确认
1. 背景与目标
当前问题:
- 进入
/monitor后相机会自动fit到设备范围,缺少「地球全景、中国居中」的总览感。 - 地图点位目前是 Mapbox
circle纯色圆点,机巢/无人机难以辨认。 MapLayer尚未开启projection: 'globe'(minZoom仍为 3)。
目标:
- 进入实时监控默认展示 真·全球全景(Mapbox globe 投影),中国居中,机巢与无人机点位同时可见。
- 重新设计 立体水滴形地图点位图标(机巢 / 无人机),状态可辨、选中有反馈。
2. 方案
采用:MapLayer 统一开 globe + Monitor overview/symbol。
MapLayer:projection: 'globe',minZoom: 1.5;初始相机对齐 overview。- Monitor:默认 / 清选中 /「查看全部」回 overview;点选飞 detail。
- 点位:重画
dock-pin-*.svg/drone-pin-*.svg,Monitorcircle→symbol。 - Tasks / Replay 共用 globe 投影;编辑时仍
pitch = 0(2D),不单独切回 mercator。
不采用:进出 Monitor 反复 setProjection;不采用独立 /globe + Three.js。
3. 默认相机
| 项 | 约定 |
|---|---|
| 投影 | MapLayer:projection: 'globe' |
| Overview 中心 | 固定中国中部 ≈ [104.0, 35.0],不跟 env 贵州中心 |
| Overview zoom | 1.8(全球级;允许 1.6–2.0) |
minZoom |
1.5 |
| Detail 中心/业务中心 | 仍可用 env APP_MAP_CENTER_*(点选飞设备坐标,不依赖 overview 中心) |
| Detail zoom | 现有约 16(MAP_VIEW.detailZoom 或等价常量) |
| 进页 | 不再 fitAllMarkers();无 deviceId 时 resetOverviewCamera() |
| 点选 | easeTo 设备坐标,zoom ≥ detailZoom |
| 取消选中 | resetOverviewCamera()(中国居中 + overview zoom),不是 fit 设备包围盒 |
| 「查看全部」按钮 | 保留;行为改为 resetOverviewCamera()(有选中先清选中) |
深链 ?deviceId= |
选中该设备并飞 detail,不先闪 overview 再飞(实现时可直接 detail) |
| 设备更新 | 仅 GeoJSON setData,不因刷新改相机 |
4. 点位图标(重做)
4.1 风格
立体水滴标注;保留现有文件名,重画覆盖:
- 机巢:蓝色水滴针 + 白色舱站/小屋剪影
- 无人机:青绿水滴针 + 白色四旋翼剪影
- 阴影 / 轻微立体感;针尖落点清晰
- 白描边保证深色影像底图可读
| 状态 | 表现 |
|---|---|
| online | 主色正常(机巢蓝 / 无人机青绿) |
| mission | 偏飞行蓝,或外圈光晕加强 |
| alarm | 红色针身 / 红描边 |
| offline | 灰色针身,降低饱和 |
| selected | 放大约 1.25× + 可选半透明光晕 circle |
资源:
public/assets/icons/dock-pin-{online,mission,alarm,offline,pending}.svgpublic/assets/icons/drone-pin-{online,mission,alarm,offline,pending}.svgpending:无独立业务态时视觉可对齐online,文件保留以免引用断裂
图例左下:在线机巢 / 飞行中 / 告警 / 离线;颜色与点位状态对齐。
4.2 图层
- Monitor 主点位:
circle→symbol;icon-image按kind + statusClass选择已loadImage的 pin - 可选极淡 halo
circle仅用于 selected - 名称
symboltext:minzoom ≥ 4,避免全球级字叠成一团 - 绑定虚线(机巢 ↔ 飞行中无人机)保留
- 侧栏
dock.svg/drone.svg本轮不改 setStyle(卫星/地图)后必须在style.load重新loadImage(若需)并重建 symbol / 绑定线图层(沿用现有 pending style handler)
4.3 交互
- 点击图标:
select(id) - 点击空白:清空选中 → overview
- hover:
canvascursorpointer(命中 symbol 时) - 「查看全部」:回 overview
5. 架构落点
| 文件 | 变更 |
|---|---|
src/config/map.js |
导出 MAP_OVERVIEW(center/zoom)、detailZoom(或 MAP_VIEW) |
src/layout/MapLayer.vue |
projection: 'globe'、minZoom: 1.5、初始 center/zoom = overview |
src/views/MonitorView/MonitorView.vue |
resetOverviewCamera;去掉进页/清选中 fitAllMarkers;circle→symbol;fitAll 按钮改 overview |
public/assets/icons/dock-pin-*.svg / drone-pin-*.svg |
重画覆盖 |
不改:MapLayer 单例、commonRefs / mapHelper 容器挪移、Tasks/Replay 业务图层逻辑、侧栏图标。
6. 非目标
- 不做独立
/globe总览路由 / Three.js / Cesium - 不做 marker cluster
- 不重做侧栏设备树图标
- 不把 overview 中心绑到 env 贵州坐标
- 不删「查看全部」按钮(只改行为)
7. 验收
- 登录后进
/monitor:地球全景、中国大致居中,可见机巢与无人机水滴点。 - 点选飞向设备;取消选中或点「查看全部」回到全球中国居中。
- 机巢 / 无人机造型可一眼区分;告警 / 离线可辨;选中有放大或光晕。
- 卫星 ↔ 地图切换后点位与绑定线仍在。
npm run build通过;监控页无地图初始化控制台错误。
8. 风险
- 全球 zoom 下点重叠:本轮可接受,不做 cluster。
- SVG → Mapbox image:优先栅格化/多状态静态 SVG 直接
loadImage;若着色受限,不依赖icon-colortint。 - 共用 globe 投影:Tasks 航线编辑需确认
resize+ pitch0 下仍可点选;不在本轮改 Tasks 图层语义。 setStyle会丢自定义 image:重建路径必须重新加载 pin 图。