Cesium开源

Vue3.0引入Cesium源码

2021-04-13  本文已影响0人  写前端的大叔

由于要对Cesium进行定制化开发,需要修改里面的源码,所以就不能使用npm的方式进行安装。需要直接引入源码的方式。其引入方式跟npm的方式差不多,只需要下载源码,修改一下配置文件既可。

1 下载源码

直接从官网下载源码,我这里下载的是最新的版本1.8.0

2 初始化Vue项目

使用Vue脚手架项目创建一个空项目。

3 引入源码

创建好项目后,将源码目录下的SourceThirdParty复制到src目录下的Cesium目录中。

4 修改配置文件

在项目的根目录下,创建一个vue.config.js,然后将下面的代码复制到配置文件中。其作用主要是将WorkersAssetsWidgetsThirdParty的目录复制到指定的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文件中,引用cssCesium类并要设置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平台。

上一篇下一篇

猜你喜欢

热点阅读