主题
EngineFacade — 引擎子门面
通过 app.engine 访问引擎管理功能。
current()
获取当前使用的引擎 ID。
ts
current(): stringts
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 }>返回值数组中每项包含:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 引擎标识 |
| dimension | string | 支持的维度('2d'、'3d') |
| lazy | boolean | 是否延迟加载 |
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>| 参数 | 类型 | 描述 |
|---|---|---|
| engineId | string | 目标引擎 ID(必填) |
| keepView | boolean | 是否保留视图状态 |
| keepLayers | boolean | 是否保留图层 |
| transition | object | 过渡动画 { 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| 参数 | 类型 | 描述 |
|---|---|---|
| engineId | string | 引擎标识(必填) |
| loader | function | 引擎加载函数(异步) |
| dimension | string | 支持的维度('2d'、'3d') |
ts
app.engine.register('cesium', async () => {
const { default: CesiumAdapter } = await import('@gmap/cesium');
return new CesiumAdapter();
}, { dimension: '3d' });link(others, options)
链接多个门面实例,实现视图同步。
ts
link(others: MapFacade[], options?: { sync?: Array<'center' | 'zoom' | 'bearing' | 'pitch'>; throttle?: number }): Disposable| 参数 | 类型 | 描述 |
|---|---|---|
| others | MapFacade[] | 要同步的其他门面实例数组 |
| sync | Array | 同步的视图属性(默认全部) |
| throttle | number | 节流间隔(毫秒) |
返回值: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');