外观
核心概念与架构
814字约3分钟
2026-10-20
本页目标
用 5 分钟建立 Mars2D 的“对象模型”心智图:知道一个地图由哪些对象组成、它们之间是什么关系、分别对应哪个命名空间,之后再看具体章节就不会迷路。
1. 先记住 5 类对象
Mars2D 的所有 API 都可以归到下面 5 类对象里,记住它们的分工,基本就掌握了整个框架:
| 对象 | 作用 | 命名空间 | 典型类 |
|---|---|---|---|
| Map 地图 | 整个地图的容器和“总指挥”,管理图层、控件、分析对象 | mars2d.Map | mars2d.Map |
| Layer 图层 | 承载一类数据(瓦片/矢量/服务),负责加载、显示、显隐 | mars2d.layer.* | GraphicLayer、TileLayer、WmsLayer、GeoJsonLayer |
| Graphic 矢量对象 | 图层里的一个个点、线、面、图标、文本 | mars2d.graphic.* | Marker、Polyline、Polygon、Label |
| Control 控件 | 地图上的交互面板和工具(状态栏、鹰眼、鱼骨、分屏等) | mars2d.control.* | LocationBar、OverviewMap、Slider |
| Thing 管理与分析 | 量算、截图等成体系的功能模块 | mars2d.thing.* | Measure |
一句话记忆:Map 管全局,Layer 管数据,Graphic 管要素,Control 管交互,Thing 管功能。
2. 它们是怎么组合起来的
一个地图对象的典型结构:
map (mars2d.Map)
├─ layers 图层集合
│ ├─ basemaps 底图(栅格瓦片)
│ └─ operational 叠加图层(矢量、影像、服务)
│ └─ graphicLayer (GraphicLayer)
│ └─ graphics 一个个矢量对象
├─ controls 控件集合
└─ things 管理与分析集合对应的增删方法:
| 操作 | 方法 |
|---|---|
| 添加/移除图层 | map.addLayer(layer) / map.removeLayer(layer) |
| 添加/移除控件 | map.addControl(control) / map.removeControl(control) |
| 添加/移除分析对象 | map.addThing(thing) / map.removeThing(thing) |
| 图层内添加/移除矢量 | layer.addGraphic(graphic) / layer.removeGraphic(graphic) |
图层、矢量对象自身也提供了
layer.addTo(map)、graphic.remove()等方法,二选一即可,效果相同。
3. 命名空间约定
所有类都以 mars2d 开头命名,开发时不要用 mars2d 作为自己的变量名,避免冲突:
mars2d.* // 核心类,如 mars2d.Map、mars2d.PointUtil
mars2d.layer.* // 图层,如 mars2d.layer.GraphicLayer
mars2d.graphic.* // 矢量对象,如 mars2d.graphic.Marker
mars2d.control.* // 控件
mars2d.thing.* // 管理与分析4. 一个地图的完整生命周期
创建 → 配置底图/图层 → 叠加矢量数据 → 绑定交互/控件 → 使用中增删 → 销毁释放5. 与 Leaflet 的关系
Mars2D 基于 Leaflet 扩展封装,很多类直接继承 Leaflet 的类(例如 mars2d.Map extends L.Map),并且完整兼容 Leaflet 的 API 和插件。详见核心依赖库 Leaflet 介绍。
6. 推荐阅读顺序
相关
- 相关示例:map/create/options
- 相关 API:mars2d.Map
- 下一篇:程序入口 Map
