Skip to content

架构概览

分层架构

┌─────────────────────────────────────────────┐
│              应用层 (Application)            │
├──────────┬──────────┬───────────────────────┤
│ 简易版    │ 标准版    │ 专业版                 │
├──────────┴──────────┴───────────────────────┤
│              核心层 (@gmap/core)             │
│   MapModel | Layer | Source | Feature       │
│   EngineAdapter | EngineRegistry | Events   │
├─────────────────────────────────────────────┤
│              引擎层 (Shim)                   │
│   OpenLayers | MapLibre | Cesium            │
└─────────────────────────────────────────────┘

三套 API 设计

简易版 (@gmap/simple)

  • 全局 G 命名空间
  • 工厂函数,零 new
  • 链式调用 .addTo(map)

标准版 (@gmap/standard)

  • ES 模块导入
  • 完整类型系统
  • 15 种几何、12 种符号、8 种渲染器

专业版 (@gmap/advanced)

  • 门面模式
  • 子门面隔离关注点
  • Ref 类型安全引用

引擎适配器

每个引擎实现 EngineAdapter 接口:

ts
interface EngineAdapter {
  readonly id: string;
  readonly capabilities: EngineCapabilities;

  // 生命周期
  mount(container, options): Promise<void>;
  destroy(): void;

  // 视图
  getViewState(): ViewState;
  setViewState(state): void;
  flyTo(target): Promise<void>;

  // 数据
  createSource(spec): EngineSourceHandle;
  createLayer(spec): EngineLayerHandle;
  addFeatures(layer, features): EngineFeatureHandle[];

  // ... 更多方法
}

能力声明通过 capabilities 对象,不支持的方法自动降级为 no-op + warnOnce。

依赖图

@gmap/core ─────────────────── 零依赖

  ├── @gmap/geo ────────────── 零依赖

  ├── @gmap/style-mapbox ───── 零依赖

  ├── @gmap/standard ───────── 依赖 core, geo
  │     │
  │     ├── @gmap/simple ───── 依赖 core, geo, standard, services
  │     │
  │     └── @gmap/advanced ─── 依赖 core, geo, standard, services

  ├── @gmap/shim-openlayers ── 依赖 core(peer: ol)

  ├── @gmap/shim-maplibre ──── 依赖 core, style-mapbox(peer: maplibre-gl)

  ├── @gmap/shim-cesium ────── 依赖 core(peer: cesium)

  └── @gmap/services ───────── 零依赖

包作用域

层级包名说明
核心层@gmap/core核心抽象,零外部依赖
核心层@gmap/geo量算/分析/投影,零依赖
核心层@gmap/style-mapboxMapbox 样式引擎,零依赖
API 层@gmap/standard标准版 API
API 层@gmap/simple简易版 API
API 层@gmap/advanced专业版 API
引擎层@gmap/shim-openlayersOpenLayers 2D 适配器
引擎层@gmap/shim-maplibreMapLibre 2D 适配器
引擎层@gmap/shim-cesiumCesium 3D 适配器
插件层@gmap/services地图服务 API

二三维共存架构

OneMap 支持在一个地图实例中同时运行 2D 和 3D 引擎,通过 CoexistenceManager 实现:

  • CameraSync — 通过 ViewState 中间态双向同步相机
  • LayerSync — 自动将主引擎的图层/数据源/要素同步到辅助引擎
  • OverlaySync — 将 2D DOM Overlay 投影到 3D 场景

所有三个引擎适配器(OpenLayers、Cesium、MapLibre)都实现了共存所需的接口: setInputEnabled()view:change 事件、overlay 管理方法。

详见 引擎适配器概览

四川省交通运输综合地理服务平台 地图开发框架