1.1 Cesium简介
Cesium是一个基于JavaScript开发的WebGL三维地球和地图可视化库。它利用了现代Web技术,如HTML5、WebGL和WebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。
Cesium的主要特点包括:
- 跨平台、跨浏览器:无需额外插件,即可在多种操作系统和浏览器上运行。
- 海量数据支持:Cesium定义了3D Tiles数据格式,支持大规模三维模型和地形数据的加载与渲染。
- 丰富的地图模式:支持三维、二维和哥伦布视图(2.5D),提供多种地图和地形图层选择。
- 交互功能:支持地址搜索、信息属性框等用户交互功能,以及全屏模型和WebVR虚拟现实体验。
Cesium主要的功能有:
1、使用3d tiles格式流式加载各种不同的3d数据,包含倾斜摄影模型、三维建筑物、CAD和BIM的外部和内部,点云数据。并支持样式配置和用户交互操作。
2、全球高精度地形数据可视化,支持地形夸张效果、以及可编程实现的等高线和坡度分析效果。
3、支持多种资源的图像图层,包括WMS,TMS,WMTS以及时序图像。图像支持透明度叠加、亮度、对比度、GAMMA、色调、饱和度都可以动态调整。支持图像的卷帘对比。
4、支持标准的矢量格式KML、GeoJSON、TopoJSON、以及矢量的贴地效果。
5、三维模型支持gltf2.0标准的PRB材质、动画、蒙皮和变形效果。贴地以及高亮效果。
6、使用CZML支持动态时序数据的展示。
7、支持各种几何体:点、线、面、标注、公告牌、立方体、球体、椭圆体、圆柱体、走廊、管径、墙体。
8、可视化效果包括:基于太阳位置的阴影、自身阴影、柔和阴影。
9、支持大气、雾、太阳、阳光、月亮、星星、水面。
10、粒子特效:烟、火、火花。
11、地形、模型、3d tiles模型的面裁剪。
12、对象点选和地形点选。
13、支持鼠标和触摸操作的缩放、渲染、惯性平移、飞行、任意视角、地形碰撞检测。
14、支持3d地球、2d地图、2.5d哥伦布模式。3d视图可以使用透视和正视两种投影方式。
1.2 Cesium资源
1.2 搭建Cesium的Vue3项目
1、使用vite创建vue3项目
npm create vue@latest
如果对Vue3不太熟悉,可以参考Vue3+vite+Ts+pinia—第一章 初识Vue3。
2、安装Cesium插件
目前Vite提供了很多插件,其中包括Cesium,我们可以去Vite社区插件进行下载。
(1)首先我们先访问Vite的官网:cn.vitejs.dev/ ,然后在头部导航选择插件
(2)进入社区插件
(3)搜索Cesium插件
(4)安装并引用Cesium插件
这里就按照指示在工程里配置即可:
3、设置Cesium的密钥token
Cesium在没有设置token的情况下,它会给你使用一个默认的token,在一段时间内你是可以正常使用的,但是不久后它会提示token过期,地图无法加载。
这个问题其实可以通过设置token来解决,以下是设置token的步骤:
(1)登录Cesium官网,进入"OPEN ION"
(2)选择"Access Tokens"选项
(3)复制token
(4)在Vue3工程的main.ts里设置token
在main.ts文件里,先引入Cesium模块,然后通过设置Cesium.Ion.defaultAccessToken,保存刷新页面,地图可以恢复正常。
4、初始化Cesium实例
实例化Cesium还是很简单的,给它一个指定的容器,然后把容器作为参数调用Cesium.Viewer构造函数就完成了。
<script setup>
import * as Cesium from 'cesium';
import { onMounted } from 'vue';
onMounted(() => {
const viewer = new Cesium.Viewer('cesiumContainer');
})
</script>
<template>
<div id="cesiumContainer"></div>
</template>
1.3 查看器基本功能
1、搜索功能
cesium自带了搜索地理位置组件,而且还能很好的兼容中文。
2、恢复默认视角
搜索按钮旁边有一个"View Home"按钮,可以让搜索后的位置快速回归到默认的视角。
3、2D/2.5D/3D切换
在右上角的球形图标那里,可以进行2D/2.5D/3D的切换。
(1)2D
(2)2.5D
(3)3D
4、切换地图风格
在右上角的球形图标的旁边,有一个类似于地形的图标,点开它会展开一些Cesium自带提供的一些地图风格供我们选择。
5、操作指引
在右上角的问号图标,点开它会展开一些比较基础的鼠标操作指引。
6、时间轴播放器
这地图的底部Cesium还自带了一个时间轴播放器,它支持正放和倒放。
1.4 查看器基本配置
查看器的各个功能都是有配置进行控制的,一般开发者未必用得着这些功能,我们可以根据需求控制其显示或隐藏。
<script setup>
import * as Cesium from 'cesium';
import { onMounted } from 'vue';
onMounted(() => {
const viewer = new Cesium.Viewer('cesiumContainer', {
// 搜索按钮
geocoder: false,
// 地图风格切换按钮
baseLayerPicker: false,
// 恢复默认视角按钮
homeButton: false,
// 2D/2.5D/3D切换按钮
sceneModePicker: false,
// 操作指引按钮
navigationHelpButton: false,
// 动画播放控件
animation: false,
// 时间轴控件
timeline: false,
// 全屏按钮
fullscreenButton: false,
});
// 隐藏Cesium的logo
viewer._cesiumWidget._creditContainer.style.display = "none";
})
</script>
<template>
<div id="cesiumContainer"></div>
</template>