docs/docs/cn/plugins/@nocobase/plugin-map/index.md
在 NocoBase v2 中,地图区块(Map block) 用于把数据表里的地理信息展示在地图上。它支持高德地图和 Google Maps,可以展示点、线、多边形、圆等地图字段,也可以通过区块操作打开记录详情、筛选数据或执行自定义操作。
地图区块是数据表区块。使用前需要先启用 @nocobase/plugin-map,并在数据表里准备至少一个地图字段。
启用插件后,进入「插件配置 / 地图管理」配置地图服务。
其中:
Access key,以及 securityJsCode 或 serviceHostApi key配置保存后,地图字段和地图区块会根据字段选择的地图类型加载对应服务。如果地图无法加载,可以先检查 key 是否正确、域名白名单是否包含当前访问域名,以及浏览器是否能访问对应地图服务。
在数据表中添加字段时,可以在「基于地图的几何图形」分组下选择字段类型。
| 字段类型 | 用途 |
|---|---|
| 点 | 标记单个位置,比如门店、设备、客户地址 |
| 线 | 表示路线或轨迹 |
| 多边形 | 表示区域范围 |
| 圆 | 表示以某个点为中心的半径范围 |
创建字段时需要选择「地图类型」。这个配置决定字段编辑和区块展示时使用高德地图还是 Google Maps。通常来说,同一套业务数据建议统一使用一种地图类型。
进入 v2 页面配置模式后,点击「添加区块」,在「数据区块」分组里选择「地图」。
创建时需要选择:
如果数据表中没有可用的地图字段,地图区块不会有可选字段。需要先回到数据表配置里添加点、线、多边形或圆字段。
地图区块创建后,可以在区块设置里调整展示和交互行为。
| 设置项 | 说明 |
|---|---|
| 地图字段和标记字段 | 切换区块使用的地图字段,以及点位标签字段 |
| 数据范围 | 限制地图区块加载和展示的记录 |
| 连接顺序字段 | 对点位排序,并按顺序连接成线路。只有地图字段为「点」时才会生效 |
| 地图默认缩放级别 | 设置地图初始化时的缩放级别 |
| 操作 | 在地图区块顶部添加筛选、新增、弹窗、链接、刷新、自定义请求、AI 员工、JS 操作等按钮 |
地图区块会加载符合数据范围的所有记录,不走分页。数据量较大时,建议先配置「数据范围」,或者通过筛选操作缩小展示范围。
地图区块会把每条记录的地图字段渲染成地图覆盖物。点击覆盖物时,会触发记录打开流程,通常用于打开弹窗、抽屉或其他记录视图。
区块左上角提供选择工具:
选中的记录会同步到区块资源,后续可以配合区块操作处理这些记录。
地图区块的 v2 客户端实现位于 packages/plugins/@nocobase/plugin-map/src/client-v2/。
几个主要入口:
plugin.tsx:注册地图字段、地图管理设置页,以及 v2 FlowModel loadermodels/MapBlockModel.tsx:地图区块模型,继承 CollectionBlockModel,定义创建区块、数据范围、排序、缩放级别和打开记录等流程models/MapActionGroupModel.tsx:地图区块可添加的操作集合models/MapBlockComponent.tsx:根据地图字段的 mapType 分发到高德地图或 Google Maps 组件models/fieldModels/:点、线、多边形、圆等地图字段在 v2 中的模型实现如果你要扩展新的地图服务,通常需要新增地图字段的 mapType 选项,并补充对应的地图渲染组件和区块组件。