Vue3.0引入Cesium源码
2021-04-13 本文已影响0人
写前端的大叔
由于要对Cesium
进行定制化开发,需要修改里面的源码,所以就不能使用npm
的方式进行安装。需要直接引入源码的方式。其引入方式跟npm
的方式差不多,只需要下载源码,修改一下配置文件既可。
1 下载源码
直接从官网下载源码,我这里下载的是最新的版本1.8.0
。
2 初始化Vue项目
使用Vue
脚手架项目创建一个空项目。
3 引入源码
创建好项目后,将源码目录下的Source
和ThirdParty
复制到src
目录下的Cesium
目录中。
4 修改配置文件
在项目的根目录下,创建一个vue.config.js
,然后将下面的代码复制到配置文件中。其作用主要是将Workers
,Assets
,Widgets
,ThirdParty
的目录复制到指定的CESIUM_BASE_URL
目录中,便于源码中找到对应的文件。
const CopyWebpackPlugin = require("copy-webpack-plugin");
const webpack = require("webpack");
module.exports = {
configureWebpack: {
plugins: [
//copy-webpack-plugin 5.x 的写法
new CopyWebpackPlugin([{
from: "src/Cesium/Source/Workers",
to: 'cesium/Workers'
}]),
new CopyWebpackPlugin([{
from: "src/Cesium/Source/Assets",
to: 'cesium/Assets'
}]),
new CopyWebpackPlugin([{
from: "src/Cesium/Source/Widgets",
to: 'cesium/Widgets'
}]),
new CopyWebpackPlugin([{
from: "src/Cesium/ThirdParty",
to: 'cesium/ThirdParty'
}]),
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("./cesium")
})
],
module: {
unknownContextCritical: false,
unknownContextRegExp: /\/cesium\/cesium\/Source\/Core\/buildModuleUrl\.js/
}
},
}
5 引入代码
在main.js
文件中,引用css
和Cesium
类并要设置accessToken
。
import * as Cesium from './Cesium/Source/Cesium';
import './Cesium/Source/Widgets/widgets.css'
也可以将其挂载到全局变量上。
const app = createApp(App);
app.use(store).use(router).mount('#app');
app.config.globalProperties.$Cesium = Cesium;
Cesium.Ion.defaultAccessToken='你的accessToken'
6创建地图
在vue
文件中引用Cesium
进行创建地图,具体代码如下所示:
<template>
<div class="home">
<div id="map"></div>
</div>
</template>
<script>
import {getCurrentInstance, onMounted} from 'vue';
export default {
name: 'Home',
components: {
},
setup(){
const {ctx } = getCurrentInstance();
const Cesium = ctx.$Cesium;
const initMap = ()=>{
let viewer = new Cesium.Viewer('map',{
});
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(112.4175, 23.655, 400),
orientation : {
heading : Cesium.Math.toRadians(0.0),
pitch : Cesium.Math.toRadians(-15.0),
}
});
};
onMounted(() => {
initMap();
})
}
}
</script>
<style scoped>
.home,#map{
height: 100%;
width: 100%;
}
</style>
引入源码方式基本就这几个步骤,以后会不定期的分享Cesium
相关的文档,将利用业余时间开发一个二三维一体的webgis
平台。