Cesium 初始化很简单,配置 viewer 初始化参数(不配置则为默认参数),然后实例化 Viewer 方法,传入需要挂载的容器 id(或者容器元素)以及初始化参数即可。
下面为代码示例:
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<div id="cesiumContainer"></div>
<script type="module" src="./main.ts"></script>
</body>
</html>
js
// main.ts
import '@/css/common.css'
import initCesium from '@/libs/base/initCesium'
init()
/**
* 函数初始化
*/
function init() {
getViewer()
}
/**
* 初始化 Cesium ,获取实例化 viewer 对象,并挂载到 cesiumContainer 上
* @returns {Cesium.Viewer} 实例化得到的 viewer
*/
function getViewer(): Cesium.Viewer {
const cesiumContainer = document.querySelector('#cesiumContainer') as HTMLDivElement
const viewer = initCesium(cesiumContainer)
return viewer
}
js
// src/libs/base/initCesium
import {
Viewer,
Ion
} from 'cesium'
/**
* 自定义的默认 Cesium.Viewer 初始化参数对象
*/
const viewerOptions: Viewer.ConstructorOptions = {
animation: false, // 动画部件
baseLayerPicker: false, // 基础图层部件
fullscreenButton: false, // 全屏按钮部件
geocoder: false, // 位置搜索部件
homeButton: false, // home 按钮
infoBox: false, // 消息框部件
sceneModePicker: false, // 二三维切换部件
selectionIndicator: false,
timeline: false, // 时间轴部件
navigationHelpButton: false, // 导航帮助按钮
navigationInstructionsInitiallyVisible: false, // 导航说明显示
scene3DOnly: true, // 当设置为 true 时,每个几何图形实例将仅以 3D 形式呈现,以节省 GPU 内存。
automaticallyTrackDataSourceClocks: false, // 设置成 true,使用公共 clock 对象,设置 false,所有功能使用独立 clock 对象
}
/**
* Cesium Ion 申请的 key ,不需要 Cesium 的 asset 的话可以不配置这一项。
*/
const defaultToken: string = `您的token`
/**
* Cesium.Viewer 初始化
* @param container 实例化 Cesium.Viewer 的容器
* @param [options] Cesium.Viewer 初始化参数
* @param [token] Cesium 授权 Token
* @returns {Viewer} 实例化得到的 viewer
*/
export default function initCesium(
container: string | Element,
options: Viewer.ConstructorOptions = {},
token?: string
): Viewer {
Ion.defaultAccessToken = token ? token : defaultToken
const resultOptions = Object.assign(viewerOptions, options)
return new Viewer(container, resultOptions)
}
另外,隐藏 cesium 的版权声明也是一个常见需求。
css
/* src/css/common.css */
#cesiumContainer {
/* 公共cesiumContainer样式 */
height: 100vh;
width: 100vw;
.cesium - widget - credits {
/* 隐藏左下角cesium版权声明 */
display: none;
}
}
显示效果如下: