VUE_CLI4.5 VUE+Cesium

1、VUE_CLI安装VUE项目

2、安装cesium依赖

npm install cesium

本人目前cesium 版本1.82.1

3、配置vue.config.js

/*
 * @Author: your name
 * @Date: 2020-10-30 17:25:40
 * @LastEditTime: 2021-05-19 21:55:07
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \vue-demo\vue.config.js
 */
const CopyWebpackPlugin = require('copy-webpack-plugin')
const webpack = require('webpack')
const path = require('path')

let cesiumSource = './node_modules/cesium/Source'
let cesiumWorkers = '../Build/Cesium/Workers'


module.exports = {
  // 基本路径  3.6之前的版本时 baseUrl
  publicPath: "./",
  // 输出文件目录
  outputDir: "dist",
  // eslint-loader 是否在保存的时候检查
  lintOnSave: false,
  // webpack-dev-server 相关配置
  devServer: {
    proxy: {
      '/try': {
        target: 'https://www.runoob.com',
        ws: true,
        changeOrigin: true
      },
      '/yuxi_DEM': {
        target: 'http://yxgis2sim.hdec.com',
        ws: true,
        changeOrigin: true
      },
      '/iserver': {
        target: 'http://yxgis2sim.hdec.com',
        ws: true,
        changeOrigin: true
      },
      '/testt': {
        target: 'http://localhost:8081',
        ws: true,
        changeOrigin: true
      },
      // '/ismap-mvt-ShenSeDiTu1231erver': {
      //   target: 'http://gisct.ecidi.com/iserver/services',
      //   ws: true,
      //   changeOrigin: true
      // },
      '/map-mvt-ShenSeDiTu1231': {
        target: 'http://gisct.ecidi.com/iserver/services',
        ws: true,
        changeOrigin: true
      },
      '/yuxiBasemap': {
        target: 'http://yxgis2.hdec.com',
        ws: true,
        changeOrigin: true
      },
      '/geoserver': {
        target: 'http://localhost:8088',
        ws: true,
        changeOrigin: true
      },
      '/UserController': {
        target: 'http://localhost:8080',
        ws: true,
        changeOrigin: true
      }
      // '/foo': {
      //   target: '<other_url>'
      // }
    }
  },
  configureWebpack: {
    output: {
      sourcePrefix: ' '
    },
    amd: {
      toUrlUndefined: true
    },
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': path.resolve('src'),
        'cesium': path.resolve(__dirname, cesiumSource)
      }
    },
    plugins: [
      new CopyWebpackPlugin([{ from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' }]),
      new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Assets'), to: 'Assets' }]),
      new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' }]),
      new CopyWebpackPlugin([{ from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' }]),
      new webpack.DefinePlugin({
        CESIUM_BASE_URL: JSON.stringify('./')
      })
    ],
    module: {
      unknownContextCritical: /^.\/.*$/,
      unknownContextCritical: false
    }
  }
}

4、配置main.js全局引入cesium相关文件

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "./plugins/element.js";
 
Vue.config.productionTip = false;
 
//引入cesium相关文件
var cesium = require('cesium/Cesium');
var widgets= require('cesium/Widgets/widgets.css');
 
Vue.prototype.cesium = cesium
Vue.prototype.widgets = widgets
 
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

5、修改Hone.vue

<template>
  <div id="container" class="box">
    <div id="cesiumContainer"></div>
  </div>
</template>
 
<script>
export default {
  name: 'Home',
  mounted(){
    this.init()
  },
  methods: {
    init() {
      let Cesium = this.cesium
      let viewer = new Cesium.Viewer('cesiumContainer');
      viewer._cesiumWidget._creditContainer.style.display = "none";// 隐藏版权
    }
  }
};
</script>
 
<style lang='scss' scoped>
html,
body,
#cesiumContainer {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}
.box {
  height: 100%;
} 
</style>

 

posted @ 2021-06-23 21:56  羊大葱  阅读(1855)  评论(1编辑  收藏  举报