1. 前言
Cesium是一款开源的基于JavaScript的3D地图框架,用于创建虚拟场景的3D地理信息平台,目标是用于创建以基于Web的地图动态数据可视化。也就是如果开发人员想要快速创建复杂的地理信息可视化项目,那么Cesium是首选。基于vitejs+cesium,八青妹学习下cesium如何使用,记录下学习步骤,如果有坑,先踩为敬。
2.项目创建
2.1 创建vite项目
yarn create vite cesiumapp --template vue
cd cesiumapp
yarn add
2.2 安装 vite-plugin-cesium插件
yarn add cesium vite-plugin-cesium vite -D
# npm i cesium vite-plugin-cesium vite -D
该插件的地址: vite-plugin-cesium
2.3 修改vite.config.js配置
在项目配置中引入cesium插件,vite.config.js的页面修改如下:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cesium from 'vite-plugin-cesium';
export default defineConfig({
plugins: [vue(),cesium()]
});
2.4 修改App.vue
在App.vue页面中,放置一个id为cesiumContainer的div容器。
<template>
<div id="cesiumContainer"></div>
</template>
<script setup>
import { onMounted } from "vue";
import * as Cesium from "cesium";
onMounted(() => {
const viewer =new Cesium.Viewer("cesiumContainer")
})
</script>
<style>
#app {
width: 100%;
height: 100%;
font-family: sans-serif;
text-align: center;
}
html,
body,
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
2.5 运行项目
以上的步骤做完,美美的运行yarn dev,期待出现蓝色星球,但是运行后发现页面不能正常展示,样式紊乱图片丢失,报错了。
不应该啊不应该!于是换个姿势,使用
npm install再次将依赖安装一遍,成功了。
嗯啊,好看!
3.viewer查看器
基本用法
官方API文档传送门,现在我们理解下const viewer =new Cesium.Viewer("cesiumContainer") 这个代码的含义。
new Cesium.Viewer(container, options)
这段用于构建应用程序的基础部件。它将所有标准的Cesium组件组合成一个可重复使用的软件包。 container是要在页面展示cesium的容器,必须为页面中存在的id,options为可添加初始化选项的对象。我们案例中没有添加options的额外描述,即使用的默认的参数设置。接下来,看看页面展示中对应的入口选项是什么参数来控制的。
默认展示的组件入口图标
| 图标 | 控件名称 | option |
|---|---|---|
| 场景模式选择器 | sceneModePicker | |
| 帮助按钮 | navigationHelpButton | |
| 时间轴 | timeline | |
| 全屏按钮 | fullscreenButton | |
| 主页,点击之后将视图跳转到默认视角 | homeButton | |
| 底图切换控件 | baseLayerPicker | |
| 一种地理位置搜索工具(搜索框),用于显示相机访问的地理位置 | geocoder |
这些默认值都为true,默认展示。要想让其不展示,将对应的值改为false。
let viewer = new Cesium.Viewer("cesiumContainer", {
sceneModePicker: false, // 隐藏场景模式选择器
navigationHelpButton: false, // 隐藏帮助按钮
timeline: false, // 隐藏时间轴
fullscreenButton: false, // 隐藏全屏按钮
homeButton: false, // 隐藏主页按钮
baseLayerPicker: false, // 隐藏底图切换控件
geocoder: false, // 隐藏地理编码器(搜索栏)
});
默认支持鼠标(电脑)和手指(移动设备)交互,控制相机漫游数字地球方式:
- 按住鼠标左键拖拽:让相机在数字地球平面平移。
- 按住鼠标右键拖拽:缩放相机。
- 鼠标滚轮滑动:缩放相机。
- 按住鼠标中键拖拽:在当前地球的屏幕中间点,旋转相机。
如果控制台出现如下报错Blocked script execution in 'about:blank' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
那么需要设置infoBox为false。这个错误提示是沙箱iframe不允许使用js,这里禁用禁用infobox信息面板。
const viewer = new Cesium.Viewer("cesiumContainer", {
infoBox: false,
});
4. 总结
本文中介绍了如何使用vitejs+cesium搭建基础框架,和搭建成功后访问的主页面基本组成。通过以上步骤,可以快速搭建一个基于 Vite 的 Cesium 开发环境,并开始创建地理可视化应用。