方式一:直接引入(最简单)
1.安装Cesium(Vue搭建可以看我上一期的文章)
npm i cesium -save
2.将node_modules\cesium\Build\Cesium文件夹拷贝到项目的public文件中
3.在public\index.html引入Cesium
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<!--在这里引入Cesium和css文件-->
<script src="Cesium/Cesium.js"></script>
<link href="Cesium/Widgets/widgets.css" rel="stylesheet">
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
4.加载Cesium
当我们在index.html中引入了Cesium.js后,默认Cesium对象就挂载到了Window对象上面,在Vue文件中加载:
<template>
<div class="home">
<div id="cesiumContainer"></div>
</div>
</template>
<script>
export default {
data() {
return {
map: {}
}
},
components: {},
created() {},
mounted() {
const viewer = new window.Cesium.Viewer('cesiumContainer')
console.log(viewer)
},
computed: {},
methods: {
initMap() {}
}
}
</script>
<style scoped lang="scss">
.home {
width: 100%;
height: 100%;
}
#cesiumContainer {
height: 100%;
width: 100%;
}
</style>
5.运行后我们可能会遇到报错Failed to resolve loader: sass-loader
需要引入 sass-loader 和 node-sass 包:
cnpm install sass-loader -D
cnpm install node-sass -D
6.接下来就可以看到地球啦!
方式二:使用vue-cli-plugin-cesium 插件安装cesium(需要申请key)
(因为插件基于webpack的,当前插件只支持 VueCLI3.0+ 版本)
1.安装vue-cli-plugin-cesium
vue add vue-cli-plugin-cesium
2.但最后结果都会报错:ValidationError: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
3.经多次踩坑之后发现,一切问题都是安装的vue-cli脚手架版本太高所致。
卸载vue-cli2:npm uninstall vue-cli -g
卸载vue-cli3:npm uninstall @vue/cli -g
vue安装:
npm install -g @vue/cli (安装的是最新版)
npm install vue-cli@2.9.6 (指定版本为3.0以下版本)
npm install -g @vue/cli@4.5.17(指定版本为3.0以上版本)
其他博主4.5.17版本的vue-cli安装cesium可以成功,所以我就也安装了这个版本。
4.新建项目,重新安装vue-cli-plugin-cesium
安装完成后运行可能会遇到:Error: error:0308010c:digital envelope routines::unsupported [Node Error Solved]
修改你的node版本为16.16.0
5.在vue项目中打开main.js,添加在cesium官网申请到的key值:
import { createApp } from 'vue'
import App from './App.vue'
import 'cesium/Widgets/widgets.css'
Cesium.Ion.defaultAccessToken = '申请的key值';
createApp(App).mount('#app')
6.运行项目即可:
npm run serve