当前位置: 首页 > news >正文

Vue3+vite+cesium环境搭建

引言

目前有不少vue3+cesium的配置教学,存在以下两个问题:

(1)vue3+cli方式,随着项目的迭代,npm run serve 启动调试很慢;

(2)vue3+vite 确实能将调试启动提升不少的,但是提供的cesium配置方式在调用例如3dtiles位置调整等api时存在问题。

例如:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'then')
 

尝试了很多方式,总结了vue3+vite+cesium的配置方法。

1、前置准备

(如已有环境跳过)

(1)确保电脑已安装nodejs 16以上版本

版本查看方式

node -v

(2)安装npm

npm install npm@latest -g

2、创建工程

npm create vite@latest

3、进入工程

cd test_cesium

4、安装依赖

npm install 

5、启动工程

npm run dev

6、安装cesium

(1)这里先采用vite插件方式安装cesium

npm i cesium vite-plugin-cesium vite -D

(2)此时修改vite.config.js配置(见7章)再引入cesium即可使用很方便,但存在开头存在的问题,无法使用cesium的createWorldTerrain、3dtiles矩阵调整等功能,这里可能是版本问题(不确定)。

(3)因为也没找到vite升级cesium的说明,尝试使用如下命令升级cesium版本

npm install cesium@1.95.0 -s

版本建议锁定,防止一些版本差异引起的项目错误

7、代码

HelloWorld.app

<script setup>
import { onMounted } from 'vue'
import * as Cesium from 'cesium';onMounted(() => {Initmap()
})//初始化地图
function Initmap() {Cesium.Ion.defaultAccessToken = '你的token'const esri = new Cesium.ArcGisMapServerImageryProvider({url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'});const viewer = new Cesium.Viewer("cesiumContainer", {infoBox: false,//是否显示信息框,默认truebaseLayerPicker: false,imageryProvider: esri,terrainProvider: Cesium.createWorldTerrain({requestWaterMask: true,requestVertexNormals: true})});}

另一种写法

<script >
import * as Cesium from 'cesium';
import { onMounted, } from 'vue'
export default {setup() {onMounted(() => {Initmap()return {Initmap}//初始化地图function Initmap() {Cesium.Ion.defaultAccessToken = '你的token'const esri = new Cesium.ArcGisMapServerImageryProvider({url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'});const viewer = new Cesium.Viewer("cesiumContainer", {infoBox: false,//是否显示信息框,默认truebaseLayerPicker: false,imageryProvider: esri,terrainProvider: Cesium.createWorldTerrain({requestWaterMask: true,requestVertexNormals: true})});}})}
}
#cesiumContainer {width: 100%;height: 100%;overflow: hidden;}

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cesium from 'vite-plugin-cesium';// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),cesium()],
})

App.vue

<script setup>
import HelloWorld from './components/HelloWorld.vue'</script><template><HelloWorld />
</template><style >
html,body,#app{width: 100%;height: 100%;overflow: hidden;margin: 0px;padding: 0px;
}
</style>

8、效果

解决了cesium一些api无法使用的问题,可以调整地形、水体以及3dtiles矩阵调整等。

http://www.lryc.cn/news/223557.html

相关文章:

  • metaObjecthandler 的基本理解与使用(自动插入更新人和创建人)
  • SpringBoot与ES7实现多条件搜索
  • 【排序算法】 快速排序(快排)!图解+实现详解!
  • 急招开发、安全工程师实习生
  • 数据结构与算法—插入排序选择排序
  • 基于词云图的短信热词数据可视化
  • Linux/centos上如何配置管理Web服务器?
  • Java EE进阶2
  • 最新AI系统ChatGPT源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+搭建部署教程+附源码
  • 大厂面试题-为什么一线互联网公司严禁使用存储过程
  • SpringBoot+Swagger详细使用方法
  • [动态规划] (十二) 简单多状态 LeetCode 213.打家劫舍II
  • 算法与数据结构之链表
  • 深入剖析React Hooks中的 useCallback
  • 微服务中配置文件(YAML文件)和项目依赖(POM文件)的区别与联系
  • Java快速排序算法、三路快排(Java算法和数据结构总结笔记)[7/20]
  • 【React】05.JSX语法使用上的细节
  • LeetCode 1759. 统计同质子字符串的数目【字符串】1490
  • FPGA UDP RGMII 千兆以太网(2)IDDR
  • chrome安装vue devtools
  • 【Docker】iptables命令的使用
  • Flex bison 学习好代码
  • 学习Nginx配置
  • 怎么批量获取文件名,并保存到excel?
  • 数据结构: unordered_map与unordered_set
  • WebDAV之π-Disk派盘 + PassStore
  • OpenCV实现手势虚拟拖拽
  • 深圳市宝安区委常委、宣传部部长周学良一行莅临联诚发考察调研
  • Presentation Prompter 5.4.2(mac屏幕提词器)
  • 9 网关的作用