Cesium开发实战-创建你的第一个Cesium地球

前言

在当前的技术环境下,传统前端市场已逐渐进入饱和阶段,这使得该领域的薪资水平及人才需求也相应地明显下滑。然而,Web3D技术的出现,既能借助我们的前端基础发挥出惊人的效能,同时也为我们在程序员这一行业中的持久生存提供了可能,甚至带来了涨薪的机会。

尤其是Cesium,它在GIS行业和智慧城市行业中的应用广泛,需求量也远超其他技术,已经成为了我们无法回避,必须掌握的技能。本专栏的作者本人曾亲手开发过市级智慧城市CIM平台,并因此荣获智慧城市优秀案例奖。他将以其丰富的实战经验和深厚的理论基础,为我们系统化地解读Cesium在各个行业中的应用,并分享成功的案例和经验。

抓住Web3D的风口,掌握Cesium的先机,跟随本专栏的引导,共同开启您在程序员之路的新篇章。这不仅是一个学习的机会,更是一个重新定义自己,并为未来职业生涯注入新的活力的机会。相信在这个变化的世界中,通过本书的指引,您会找到自己的一片蓝海。

1)🏕️创建前端项目

这一段是用来帮助前端小白或者没有使用过Vue3+TS+TypeScript的人们,如果你已经了解这一段内容,那么我推荐你直接跳转到第二段

  1. 输入命令创建Vue3 + Vite + TypeScript项目,并安装依赖
npm create vite@latest
  1. 先修改style.css文件的内容为:
:root, body, #app {
  width: 100%;
  height: 100%;
  margin: 0;
}

我们这么做的原因是因为默认的内容会让页面不是很好布局,特别是我们需要撑满整个屏幕。所以我们只需要简单的基础CSS即可。

  1. 安装sass,因为待会我们需要用到
npm i sass
  1. 运行项目
npm run dev
  1. 将App.vue的内容替换为以下内容:
<template>
  <!-- 作为cesium的container元素 -->
  <div class="cesium-container" ref="cesiumContainer"></div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue"

// 获取cesium的container元素
const cesiumContainer = ref();
onMounted(() => {
  
})
</script>

<style lang="scss" scoped>
// 让cesium-container撑满整个屏幕
.cesium-container {
  width: 100%;
  height: 100%;
}
</style>

这时候我们就得到了这么一个页面
在这里插入图片描述
非常棒,一切准备就绪,我们接下来将创建我们的第一个cesium地球

2)🍭初始化Cesium

  1. 安装cesium到你的项目中:
npm i cesium
  1. node_modules文件夹内找到cesium文件夹,并将Build/Cesium下的4个文件夹复制到当前项目的public/libs/cesium

在这里插入图片描述
在这里插入图片描述

因为Cesium运行时需要读取这些静态资源,如果你不直接复制的话需要去麻烦的配置打包,于是作者比较倾向于直接复制更为直观

  1. main.ts中添加如下代码:
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// ------Cesium需要添加的内容
import { Ion } from "cesium"
import "cesium/Build/Cesium/Widgets/widgets.css" // 引入Cesium需要的css

// 使用自己的cesium ion的token,token获取地址:https://ion.cesium.com/signup/? 然后注册自己的账号,然后在Access Tokens里面将Default Token的token复制出来粘贴到这里就好了
// 这里的token是作者的,可以用于测试使用,建议自己注册
Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiOTNkMWU3NS0wM2JiLTQ4NmMtYTgyNi05NWU3MWVjMWEzMmYiLCJpZCI6NzE0MzQsImlhdCI6MTYzNTIxNjIyMX0.QnoSt0kZkqKMAL_9EHw6toCwONY-Ao2mRwYpS36FLAk";
window.CESIUM_BASE_URL = '/libs/cesium/'; // 这个地方通常会ts报错,这里写/libs/cesium/是因为刚才我们把Cesium静态资源放在了public/libs/cesium目录下
// -------------------------

createApp(App).mount('#app')

window.CESIUM_BASE_URL因为没有做ts声明的报错解决:

  • 在vite-env.d.ts文件中变成如下内容,进行ts声明:
/// <reference types="vite/client" />

interface Window {
    CESIUM_BASE_URL: string
}

我们添加这些代码的原因是因为:

  1. Cesium需要读取他的静态资源,所以我们需要设置他的静态资源地址window.CESIUM_BASE_URL = '/libs/cesium/';
  2. Cesium需要用到他的cesium ion的资源所以需要cesium ion的token,建议大家自己注册,这里放出来的token是作者的,用于方便大家测试文章内容
  1. 一切初始化配置已经就绪,我们开始创建Cesium场景在我们的页面中
  2. 在App.vue中添加如下内容
<template>
  <!-- 作为cesium的container元素 -->
  <div class="cesium-container" ref="cesiumContainer"></div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from "vue"
import * as Cesium from "cesium"

// 获取cesium的container元素
const cesiumContainer = ref();
onMounted(() => {
  // 判断container元素是否获取到了
  if(cesiumContainer) {
    // 初始化cesium场景
    const viewer = new Cesium.Viewer(cesiumContainer.value, {

    });
    // 打印创建的viewer在控制台中
    console.log(viewer);
  }
})
</script>

<style lang="scss" scoped>
// 让cesium-container撑满整个屏幕
.cesium-container {
  width: 100%;
  height: 100%;
}
</style>

这时候我们看看页面就会发现,我们的Cesium场景出现了
在这里插入图片描述
这样我们的第一个Cesium场景就创建完成了。

3)🌤️实际项目中通常做的操作

在实际项目中我们通常会不需要它自带的这些UI,然后加上我们自己的UI进行控制,例如我们通常看到的智慧城市项目
在这里插入图片描述
那么我们应该如何去掉这些自带的UI呢?
添加如下代码:

// 初始化cesium场景
const viewer = new Cesium.Viewer(cesiumContainer.value, {
  infoBox: false, // 解决默认的控制台报错
  baseLayerPicker: false, // 去掉底图选择器
  sceneModePicker: false, // 去掉场景模式选择器 (3D,2D)
  homeButton: false, // 去掉起始点按钮
  geocoder: false, // 去掉地理代码搜索
  navigationHelpButton: false, // 去掉导航帮助按钮
  animation: false, // 取消动画按钮
  timeline: false, // 去掉时间线
  fullscreenButton: false, // 去掉全屏按钮
  selectionIndicator: false, // 去掉选择指示器
});
(viewer.cesiumWidget.creditContainer as HTMLDivElement).style.display = 'none'; // 去掉cesium的左下角logo区域
// 打印创建的viewer在控制台中
console.log(viewer);

于是我们就得到了一个干净的Cesium场景,然后在边上添加我们的UI在这里插入图片描述

4)🧀总结

  1. 创建前端项目
  2. 安装Cesium
  3. 复制Cesium静态资源
  4. 设置cesium的token和静态资源路径
  5. 初始化cesium
  6. 实际开发中我们通常怎么做

源码地址: https://github.com/EvenJie-XR/PracticalDevelopmentOfCesium/tree/init-cesium (init-cesium分支)

  • 10
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: cesium-examples-master 是一个 Cesium 的示例项目。Cesium 是一个开源的3D地球可视化引擎,能够在Web上以浏览器为平台展示地球相关的数据和图形。cesium-examples-master 包含了一系列基于 Cesium 引擎的示例代码和样例数据,供开发人员学习和参考。 这个项目提供了丰富的示例,涵盖了各种场景和功能,如地形渲染、卫星图像展示、空中飞行效果、地球热力图、数据可视化等。每个示例都提供了完整的源代码和相关资源,开发人员可以直接运行和修改,快速了解 Cesium 的使用方式和功能特性。 cesium-examples-master 的目的是帮助开发人员加快上手 Cesium,提供具体的示例代码和实现思路,同时也是一个社区贡献的项目,任何人都可以向其中添加自己的示例代码。这对于想要共享自己的 Cesium 开发经验,或者想要通过Cesium实现自己的创意项目的开发者们来说都是很有帮助的。 总之,cesium-examples-master 是一个集合了Cesium引擎的示例代码和样例数据的项目,通过这个项目,开发人员可以学习和参考Cesium的使用方式和功能特性,同时也可以贡献自己的示例代码,为Cesium社区贡献自己的力量。 ### 回答2: cesium-examples-master是一个开源的Cesium.js示例库。Cesium.js是一个基于WebGL的开源JavaScript库,用于创建3D地球和地理信息可视化应用程序。 cesium-examples-master库中包含了大量的示例代码,用于演示如何使用Cesium.js库进行地球和地理数据可视化。这些示例涵盖了各种应用场景,包括地球浏览、地理数据可视化、飞行模拟、地球时间轴等等。 这个示例库非常有用,特别是对于那些想要利用Cesium.js构建自己的3D地球和地理信息应用程序的开发人员来说。通过学习和理解这些示例代码,开发人员可以快速上手并加快应用程序的开发速度。 此外,cesium-examples-master还可以作为一个学习资源,供初学者学习Cesium.js库的使用。通过运行和修改这些示例代码,初学者可以逐步掌握Cesium.js的各种功能和技术知识。 总之,cesium-examples-master是一个非常有用的示例库,可以帮助开发人员和初学者更好地了解和应用Cesium.js库。无论是开发3D地球和地理信息应用程序,还是学习Cesium.js库的使用,这个示例库都是一个很好的资源。如果你对Cesium.js感兴趣,不妨去查看cesium-examples-master库并尝试运行其中的示例代码。 ### 回答3: cesium-examples-master是一个Cesium的示例代码库。Cesium是一个开源的地球可视化库,用于在Web浏览器中创建交互式三维地球地球数据的应用程序。cesium-examples-master提供了许多不同类型的示例,展示了使用Cesium创建各种地球可视化应用的能力。这些示例包括地球模型的加载、地形数据的展示、地图投影的转换、地球上的点、线和面的创建等等。通过这些示例,开发者可以学习如何使用Cesium的API来构建自己的地球可视化项目,并根据自己的需求进行修改和扩展。cesium-examples-master的代码注释详细,对于刚开始学习Cesium开发者来说是一个很好的参考工具。在cesium-examples-master中,开发者可以找到各种应用场景的示例代码,例如飞行模拟、地球上的图层切换、轨迹的绘制和动态效果等等。总之,cesium-examples-master对于想要学习和探索Cesium地球可视化库的开发者来说是一个非常有用的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫的CG世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值