Cesium快速入门1:打造第一个Cesium应用

CesiumJS 是一个主要用于三维地球和地图可视化的 JavaScript 库。它可以支持海量的三维模型数据,也就是说,我们可以根据自己的需要,选择展示地球的某一部分内容,并以三维的方式更直观、更快速地进行展示。

Cesium 可以跨平台、跨浏览器运行,而且无需安装任何插件,使用起来非常方便。

它的核心优势在于强大的地理数据可视化能力,因此与数字孪生技术密切相关。同时,Cesium 还提供了丰富的工具,帮助我们快速实现地理数据的可视化展示。

此外,Cesium 还可以与 Three.js 结合使用。例如,当我们需要展示一个三维地球时,可以用 Cesium 来进行渲染;而当我们需要更精细、更逼真的三维模型和细节时,可以结合 Three.js 来实现。

所以,接下来我们就来看一下 Cesium 是如何使用的,这也是我们本节课的重点内容。

首先,我们需要下载 CesiumJS。登录官网后,我们可以通过 NPM 安装,也可以直接下载官方提供的安装包。这里我已经提前下载好了。

下载完成后,Cesium 的压缩包大概就是这么大。我们可以在本地新建一个文件夹,把压缩包放进去并解压。当前版本是 1.93。

解压后,我们进入目录,使用 Yarn 安装依赖,也就是安装 Node Modules 中的相关依赖包。安装完成后,我们可以执行 yarn start 命令,启动 Cesium 自带的本地服务器。

启动后,我们就可以在本地访问官方文档和案例了。比如,本地会自动启动 Documentation 文档页面。这样,即使网络不好或无法翻墙,我们也可以离线查阅文档。

更重要的是,Cesium 提供了丰富的案例,尤其是 Sandcastle(沙盒)工具。在沙盒中,我们可以直接查看代码和效果,通过代码与可视化内容的结合,快速学习和理解如何实现三维地球的展示。

接下来,我们就用 Vue3 来创建一个最简单的项目,运行我们的第一个 Cesium 示例。

首先,我们使用 Vue CLI 创建一个 Vue3 项目,命令是:

vue create cesium-base

项目创建完成后,我们进入项目目录,安装 Cesium:

yarn add cesium

安装完成后,我们就可以开始编写代码了。

打开 App.vue 文件,把默认内容清空。我们需要创建一个用于显示三维地球的容器,给它设置一个 ID,比如叫 cesiumContainer。

在 Vue3 中,我们可以使用 setup 语法糖来编写逻辑。我们可以通过 ref 获取这个容器的 DOM 对象,也可以直接使用 ID 获取。

接下来,我们需要导入 Cesium 库和它自带的 CSS 样式文件。Cesium 的样式文件位于 node_modules/cesium/Build/Cesium/Widgets/widgets.css,我们需要把它引入项目。

此外,Cesium 还需要一些静态资源文件,比如图片、字体等,这些资源位于 node_modules/cesium/Build/Cesium/ 目录下的四个文件夹中。

我们需要把这四个文件夹复制到项目的 public 目录下,否则运行时会出现资源缺失的问题。

复制完成后,我们还需要设置一个全局变量,告诉 Cesium 静态资源的路径:

复制代码
window.CESIUM_BASE_URL = '/';

这是一个固定的写法,必须是大写的 CESIUM_BASE_URL,路径设置为根目录。

然后,我们在 onMounted 生命周期钩子中初始化 Cesium,确保 DOM 已经挂载完成:

复制代码
new Cesium.Viewer('cesiumContainer');

这样,我们就完成了最基本的 Cesium 地球初始化。

完整代码如下:

复制代码
<template>
  <div id="cesiumContainer" ref="cesiumContainer"></div>
</template>

<script setup>
import * as Cesium from 'cesium';
import { onMounted } from 'vue';
import './Widgets/widgets.css';
window.CESIUM_BASE_URL = '/';
onMounted(() => {
  Cesium.Ion.defaultAccessToken = 'your token';
  new Cesium.Viewer('cesiumContainer');
});
</script>

<style>
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
#cesiumContainer {
  width: 100%;
  height: 100vh;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
</style>

最后,我们启动项目:

yarn dev

浏览器中就会显示出我们的第一个三维地球了。

那么,这一节课我们就先上到这里。

相关推荐
总要学点什么4 小时前
第55篇:空间分析-剖面分析——红线走大圆,剖面却按经纬直线采样
前端框架·gis·webgl·cesium·空间分析
:mnong8 小时前
Web 三维可视化技术对比:ParaView Web vs 本项目 wasm + Three.js
前端·webgl·opengl·opencl·科学可视化
疯狂敲代码的老刘9 小时前
my-fingerprint浏览器扩展:1.4K星开源指纹防护神器,Canvas/WebGL/WebGPU伪装一键开启
webgl
总要学点什么1 天前
第51篇:数据分析-热力图——笔刷画的是圆,落到地上却成了椭圆
3d·数据挖掘·数据分析·前端框架·gis·webgl·cesium
子龙_1 天前
来在网页上用threejs画个蛋白质吧
前端·webgl·three.js
总要学点什么4 天前
第47篇:三维特效-雷达波效果——波纹一圈圈往外推,一半却埋在地下
3d·前端框架·gis·webgl·cesium
八荒启·交互动画10 天前
Web特效025—用 Canvas 2D 做Web特效的定义与边界:这支画笔能做到哪一步
前端·webgl·网页特效·八荒启-交互动画·八荒启
夜郎king11 天前
基于 Cesium + 天地图的三维地理可视化:以“岳麓山名人墓“为例,详解地形夸张、自动环绕与标签碰撞避让
cesium·实景三维·人文历史
Bruce_Liuxiaowei11 天前
网页版 DeepSeek “harness desktop“ WebGL 上下文创建失败排查实录
开发语言·javascript·webgl
像我这样帅的人丶你还16 天前
📱iPhone Duo 开屏动画咋实现的?
javascript·webgl·three.js