Files
-----/技术架构文档.md
2025-12-06 23:39:54 +08:00

2.9 KiB
Raw Blame History

技术架构文档 - 无人机飞行地图系统

1. 系统架构设计

1.1 整体架构

  • 前端框架: Vue 3 (Composition API)
  • 地图服务: 高德地图 JS API
  • 构建工具: Vite

1.2 模块划分

  • 地图容器模块: 负责地图的初始化和全屏显示
  • 电子围栏模块: 负责围栏的绘制、管理和删除

2. 数据结构设计

2.1 电子围栏数据结构

{
  id: string,           // 围栏唯一标识
  points: Array<[lng, lat]>,  // 围栏顶点坐标数组
  polygon: AMap.Polygon,      // 高德地图多边形对象
  createdAt: Date       // 创建时间
}

2.2 状态管理

  • 使用 Vue 3 的 refreactive 管理组件状态
  • 围栏列表存储在响应式数组中

3. 接口(API)设计

3.1 地图初始化

  • 函数名: initMap()
  • 功能: 初始化高德地图实例
  • 参数: 无
  • 返回值: Promise<AMap.Map>

3.2 电子围栏绘制

  • 函数名: startDrawingFence()

  • 功能: 开始绘制电子围栏模式

  • 参数: 无

  • 返回值: void

  • 函数名: addFencePoint(lng, lat)

  • 功能: 添加围栏顶点

  • 参数:

    • lng: number (经度)
    • lat: number (纬度)
  • 返回值: void

  • 函数名: completeFence()

  • 功能: 完成围栏绘制

  • 参数: 无

  • 返回值: void

3.3 电子围栏删除

  • 函数名: removeFence(fenceId)

  • 功能: 删除指定围栏

  • 参数:

    • fenceId: string (围栏ID)
  • 返回值: void

  • 函数名: clearAllFences()

  • 功能: 清除所有围栏

  • 参数: 无

  • 返回值: void

4. 核心算法与伪代码

4.1 地图初始化流程

1. 加载高德地图JS API
2. 创建地图容器DOM元素
3. 初始化地图实例,设置中心点和缩放级别
4. 绑定地图点击事件

4.2 电子围栏绘制流程

1. 用户点击"开始绘制"按钮,进入绘制模式
2. 用户在地图上点击,添加围栏顶点
3. 实时更新围栏预览(多边形)
4. 用户点击"完成绘制"或双击完成围栏
5. 保存围栏到围栏列表
6. 退出绘制模式

4.3 电子围栏删除流程

1. 用户选择要删除的围栏通过ID或点击
2. 从地图上移除多边形对象
3. 从围栏列表中移除该围栏数据
4. 更新地图显示

5. 技术实现要点

5.1 高德地图集成

  • 使用 @amap/amap-jsapi-loader 加载高德地图API
  • 配置安全密钥key
  • 设置地图样式为全屏显示

5.2 电子围栏绘制

  • 使用高德地图的 AMap.Polygon 类创建多边形
  • 监听地图点击事件,收集坐标点
  • 支持实时预览围栏形状
  • 至少需要3个点才能形成围栏

5.3 交互设计

  • 绘制模式:点击地图添加顶点
  • 完成绘制:双击或点击完成按钮
  • 删除围栏:选中围栏后点击删除按钮
  • 取消绘制:点击取消按钮清除当前绘制