Vue3.0引入Cesium源碼

由于要對(duì)Cesium進(jìn)行定制化開發(fā),需要修改里面的源碼,所以就不能使用npm的方式進(jìn)行安裝。需要直接引入源碼的方式。其引入方式跟npm的方式差不多,只需要下載源碼,修改一下配置文件既可。

1 下載源碼

直接從官網(wǎng)下載源碼,我這里下載的是最新的版本1.8.0。

2 初始化Vue項(xiàng)目

使用Vue腳手架項(xiàng)目創(chuàng)建一個(gè)空項(xiàng)目。

3 引入源碼

創(chuàng)建好項(xiàng)目后,將源碼目錄下的SourceThirdParty復(fù)制到src目錄下的Cesium目錄中。

4 修改配置文件

在項(xiàng)目的根目錄下,創(chuàng)建一個(gè)vue.config.js,然后將下面的代碼復(fù)制到配置文件中。其作用主要是將Workers,Assets,WidgetsThirdParty的目錄復(fù)制到指定的CESIUM_BASE_URL目錄中,便于源碼中找到對(duì)應(yīng)的文件。

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文件中,引用cssCesium類并要設(shè)置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創(chuàng)建地圖

vue文件中引用Cesium進(jìn)行創(chuàng)建地圖,具體代碼如下所示:

<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>

引入源碼方式基本就這幾個(gè)步驟,以后會(huì)不定期的分享Cesium相關(guān)的文檔,將利用業(yè)余時(shí)間開發(fā)一個(gè)二三維一體的webgis平臺(tái)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容