Cesium.js 详细教程

一、简介
Cesium 是一个开源的 JavaScript 库,用于创建三维地球和地图的可视化,它基于 WebGL 并支持海量三维模型数据、影像数据、地形高程数据等丰富的地理数据加载,Cesium 广泛应用于交通、规划、城市管理、地形仿真等领域,为三维 GIS 提供了高效的数据可视化平台。
二、安装与配置
1. 环境准备
确保浏览器兼容 Cesium,可以通过访问示例页面来验证。
安装 Node.js。
2. 下载与构建
从 [GitHub](https://github.com/AnalyticalGraphicsInc/cesium-workshop) 下载代码,或克隆仓库:
git clone https://github.com/AnalyticalGraphicsInc/cesium-workshop cd cesium-workshop npm install npm start
控制台会显示 "Cesium development server running locally. Connect to http://localhost:8080/"。
3. 目录结构
Source/:包含业务逻辑和一些数据。
ThirdParty/:外部库,如 CesiumJS library。
index.html:主页。
server.js:服务启动文件。
三、基本使用
1. 创建 Viewer

在index.html 中引入 Cesium 类库,并在body 标签内创建一个容器div:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cesium Workshop</title>
<script src="ThirdParty/Cesium/Cesium.js"></script>
<style>@import url(ThirdParty/Cesium/Widgets/widgets.css);</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script src="Source/App.js"></script>
</body>
</html>在App.js 中初始化 Viewer:
var viewer = new Cesium.Viewer('cesiumContainer');2. 配置 Viewer
可以配置多种选项,例如只显示三维场景、去掉选择指示器、隐藏图层选择器等:
var viewer = new Cesium.Viewer('cesiumContainer', {
scene3DOnly: true,
selectionIndicator: false,
baseLayerPicker: false
});四、主要功能模块
1. 地图与图层
Cesium 支持多种地图服务,包括 WMS、TMS、WMTS、ArcGIS、Bing Maps、Google Earth、Mapbox、Open Street Map 等,可以通过ImageryProvider 接口加载这些服务。
添加影像地图示例:
// 去掉默认底图bing
viewer.imageryLayers.remove(viewer.imageryLayers.get(0));
// 添加 Sentinel-2 影像
viewer.imageryLayers.addImageryProvider(new Cesium.IonImageryProvider({ assetId: 3954 }));2. 地形服务
Cesium 提供全球地形数据,并支持深度测试和光照效果:
viewer.terrainProvider = Cesium.createWorldTerrain({
requestWaterMask: true, // required for water effects
requestVertexNormals: true // required for terrain lighting
});
viewer.scene.globe.depthTestAgainstTerrain = true;3. 空间数据实体(Entity)
Cesium 支持加载各种类型的空间数据,包括点、线、面等:
// 添加一个点实体
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
point: { pixelSize: 10, color: Cesium.Color.RED, outlineColor: Cesium.Color.BLACK, outlineWidth: 2 }
});4. 动态数据与交互
Cesium 支持实时更新的数据源,如 CZML,还可以通过事件监听实现用户交互,例如点击、移动等:

viewer.screenSpaceEventHandler.setInputAction(function(click) {
var pickedObject = viewer.scene.pick(click.position);
if (Cesium.defined(pickedObject)) {
var id = pickedObject.id;
console.log("Picked object ID: " + id);
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);5. 相机控制与动画
Cesium 提供了灵活的相机控制和飞行动画功能:
// 设置相机视图
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
orientation: {
heading: Cesium.Math.toRadians(0), // 东为正方向
pitch: Cesium.Math.toRadians(-30), // 向上倾斜30度
roll: 0.0
}
});
// 飞行动画
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(-118.2, 34.1),
orientation : {
heading : Cesium.Math.toRadians(0),
pitch : Cesium.Math.toRadians(-30),
roll : 0.0
},
duration : 2 // seconds
});五、常见问题与解答
Q1: 如何去除 Cesium 的版权信息?
A1: 你可以通过以下代码去除版权信息:
viewer._cesiumWidget._creditContainer.style.display = 'none';
Q2: 如何在本地开发环境中调试 Cesium?
A2: 确保你已经安装了 Node.js,并且按照以下步骤操作:
1、克隆或下载 Cesium workshop 代码。
2、进入项目目录并运行npm install。
3、运行npm start,然后在浏览器中访问http://localhost:8080。
4、打开开发者工具进行调试。
Cesium.js 是一个功能强大的三维地球可视化库,适用于各种地理信息系统应用,通过本教程,你可以快速上手 Cesium,了解其基本使用方法,包括配置 Viewer、加载地图和地形数据、创建空间数据实体、处理动态数据以及实现用户交互等,希望这篇教程能帮助你更好地掌握 Cesium,并在你的项目中加以应用。
以上内容就是解答有关“cesium.js”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/42866.html<
