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();

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