Skip to content

专业版 API 概览 ​

专业版 API (@gmap/advanced) 采用门面模式(Facade Pattern),将地图功能组织为子门面。

创建门面 ​

ts
import { createMapFacade } from '@gmap/advanced';

const app = await createMapFacade({
  target: 'map',                // 容器元素或 DOM ID
  engines: 'ol',                // 引擎(字符串 / 数组 / 对象)
  center: [116, 39],            // 初始中心
  zoom: 10,                     // 初始缩放
  mode: '2d',                   // 维度模式
  basemap: 'osm',               // 底图标识
  projection: 'EPSG:3857',      // 坐标系
  theme: 'light',               // 主题
  strict: false,                // 是否禁止原生访问
  lazyEngines: {},              // 延迟加载引擎
  onError: (err) => {},         // 错误处理
});

也可通过 new MapFacade(options) 构造后调用 await app.whenReady()。

子门面 ​

子门面属性职责
相机app.camera视图/相机控制
图层app.layers图层管理
数据app.data数据源/要素管理
样式app.styleMapbox 样式
交互app.interactions绘制/编辑/交互
选择app.selection要素选择
分析app.analysis空间分析
量算app.measure距离/面积量算
效果app.effects3D 场景效果
引擎app.engine引擎管理
动画app.animation动画控制

Ref 类型 ​

每个子门面的增删操作返回轻量级的 Ref 对象:

类型属性说明
LayerRefid, setVisible, setOpacity, setZIndex, remove图层引用
FeatureRefid, getAttributes, setAttributes, flyTo, remove要素引用
SourceRefid, update, refresh, remove数据源引用
InteractionRefid, stop交互引用
PopupRefid, setContent, open, close, remove弹窗引用
EffectRefid, setEnabled, remove效果引用

顶层方法 ​

方法返回值说明
app.on(type, handler, options?)Disposable事件订阅
app.once(type, handler, options?)Disposable一次性事件订阅
app.off(type, handler?)void取消事件订阅
app.whenReady()Promise<MapFacade>就绪 Promise
app.resize()void调整大小
app.exportImage(options?)Promise<string>导出图片(base64)
app.setTheme(theme)this设置主题('light' / 'dark')
app.getStats()获取性能统计
app.getNative(options?)unknown获取底层引擎对象
app.destroy()void销毁所有资源

属性 ​

属性类型说明
app.idstring门面实例唯一标识
app.mode'2d' | '3d'当前维度模式
app.readyboolean是否就绪
app.servicesRecord<string, unknown>地图服务集合

完整示例 ​

ts
import { createMapFacade } from '@gmap/advanced';

const app = await createMapFacade({
  target: 'map',
  engines: 'ol',
  center: [116.397, 39.908],
  zoom: 12,
  theme: 'light',
});

// 相机控制
app.camera.setZoom(15).setCenter([121, 31]);

// 添加图层
const ref = app.layers.addTile({ id: 'osm', url: 'https://...' });
ref.setVisible(false).setOpacity(0.5);

// 绘制交互
const draw = app.interactions.draw('polygon');
// ... 停止
app.interactions.stop(draw);

// 样式
app.style.apply({ version: 8 }).setTheme('dark');

// 选择
app.selection.set([feature1, feature2]);

// 清理
app.destroy();

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