主题
Cesium 引擎
@gmap/shim-cesium 提供基于 Cesium 的 3D 地图引擎。
安装
bash
npm install @gmap/shim-cesium cesium注册
ts
import CesiumAdapter from '@gmap/shim-cesium';
import { EngineRegistry } from '@gmap/core';
// 推荐懒加载(Cesium 体积大)
EngineRegistry.registerLazy('cesium', () => import('@gmap/shim-cesium'), { default: '3d' });能力
| 能力 | 支持 | 说明 |
|---|---|---|
| dimensions | ['3d'] | 仅 3D |
| terrain | ✅ | 地形 |
| tiles3d | ✅ | 3D Tiles |
| pointCloud | ✅ | 点云 |
| model | ✅ | 3D 模型 |
| lighting | ✅ | 光照 |
| shadows | ✅ | 阴影 |
| sceneEffects | ✅ | 场景效果 |
| raster | ✅ | 栅格瓦片 |
| geojson | ✅ | GeoJSON |
| mapboxStyle | ❌ | 不支持 |
特色
- 完整 3D 地球
- 地形和 3D Tiles
- 点云和 3D 模型
- 光照、阴影、大气效果
- 飞行相机控制
示例
ts
import { createMap } from '@gmap/standard';
import { EngineRegistry } from '@gmap/core';
EngineRegistry.registerLazy('cesium', () => import('@gmap/shim-cesium'), { default: '3d' });
const map = await createMap({
target: 'map',
engine: 'cesium',
mode: '3d',
center: [116.397, 39.908],
zoom: 10,
});
// 设置地形
map.setTerrain(new TerrainSource({ url: 'https://assets.cesium.com/...' }));
// 飞行到目标
await map.flyTo({ center: [121, 31], zoom: 12 });共存支持
- setInputEnabled — 通过
scene.screenSpaceCameraController控制enableTranslate/enableZoom/enableRotate/enableTilt - view:change — 监听
camera.changed事件 - overlay — DOM container 管理
- CesiumOverlaySyncAdapter — 将 2D overlay 投影到 3D 屏幕坐标