Skip to content

EngineFacade — 引擎子门面

通过 app.engine 访问引擎管理功能。

current()

获取当前使用的引擎 ID。

ts
current(): string
ts
const engineId = app.engine.current();
// engineId: 'ol', 'cesium', etc.

capabilities()

获取当前引擎的能力描述。

ts
capabilities(): unknown

返回值为对象,包含引擎支持的能力信息(如支持的维度等)。

ts
const caps = app.engine.capabilities();
// caps: { dimensions: ['2d'], ... }

list()

列出所有已注册的引擎。

ts
list(): Array<{ id: string; dimension: string; lazy: boolean }>

返回值数组中每项包含:

字段类型说明
idstring引擎标识
dimensionstring支持的维度('2d''3d'
lazyboolean是否延迟加载
ts
const engines = app.engine.list();
// engines: [{ id: 'ol', dimension: '2d', lazy: false }, ...]

switch(engineId, options)

切换引擎。

ts
switch(engineId: string, options?: { keepView?: boolean; keepLayers?: boolean; transition?: { type?: string; duration?: number } }): Promise<void>
参数类型描述
engineIdstring目标引擎 ID(必填)
keepViewboolean是否保留视图状态
keepLayersboolean是否保留图层
transitionobject过渡动画 { type, duration }
ts
await app.engine.switch('cesium', { keepView: true, keepLayers: true });

register(engineId, loader, options)

注册新引擎。

ts
register(engineId: string, loader: () => Promise<unknown>, options?: { dimension?: string }): void
参数类型描述
engineIdstring引擎标识(必填)
loaderfunction引擎加载函数(异步)
dimensionstring支持的维度('2d''3d'
ts
app.engine.register('cesium', async () => {
  const { default: CesiumAdapter } = await import('@gmap/cesium');
  return new CesiumAdapter();
}, { dimension: '3d' });

链接多个门面实例,实现视图同步。

ts
link(others: MapFacade[], options?: { sync?: Array<'center' | 'zoom' | 'bearing' | 'pitch'>; throttle?: number }): Disposable
参数类型描述
othersMapFacade[]要同步的其他门面实例数组
syncArray同步的视图属性(默认全部)
throttlenumber节流间隔(毫秒)

返回值:Disposable,包含 unlink() 方法用于取消同步。

ts
const group = app.engine.link([app2, app3], {
  sync: ['center', 'zoom'],
  throttle: 100,
});

// 取消同步
group.unlink();

Disposable

link 方法返回的可释放对象:

方法说明
unlink()取消视图同步
ts
const link = app.engine.link([otherMap]);
// 使用...
link.unlink(); // 取消

二三维共存

facade.engine.enterCoexistence(engineId, opts)

进入共存模式。

typescript
const coex = await facade.engine.enterCoexistence('cesium', { mode: 'over-map' });

facade.engine.toggle3D()

切换 3D 显示。

typescript
facade.engine.toggle3D();

facade.engine.exitCoexistence()

退出共存模式。

typescript
facade.engine.exitCoexistence();

facade.engine.getCoexistence()

获取共存管理器。

typescript
const coex = facade.engine.getCoexistence();
coex?.setMode('side-by-side');

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