vue-cli引入cesium

1、vue 工程建立及cesium 安裝css

vue init webpack cesium-demo
npm i cesium --save

2、webpack 配置html

1.webpack.base.conf.js中設置cesium源碼的路徑vue

定義Cesium源碼路徑const cesiumSource = '…/node_modules/cesium/Source’node

在output 里加入sourcePrefix: ’ ’ 讓webpack正確處理多行字符串webpack

在resolve中設置別名 ‘cesium’: path.resolve(__dirname, cesiumSource),定義別名cesium後,cesium表明了cesiumSource的文件路徑web

在modules的rules中再增長兩行,unknownContextRegExp: /^.\/.*$/,unknownContextCritical:falsenpm

2.webpack.dev.conf.js 文件中添加 static files 管理app

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


plugins: [
...
/* cesium */ 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({ // Define relative base path in cesium for loading assets CESIUM_BASE_URL: JSON.stringify('') }) ]

3.配置 webpack.prod.conf.js 文件ui

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


plugins: [
   ...
   /* cesium */
    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({
      // Define relative base path in cesium for loading assets
      // 定義 Cesium 從哪裏加載資源,若是使用默認的'',卻變成了絕對路徑了,因此這裏使用'./',使用相對路徑
      CESIUM_BASE_URL: JSON.stringify('./')
    })
]

4.配置config/index.js文件,配置 build 下的assetsPublicPath 爲' 'this

build: {
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),

    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: '',
    ...
}

5.在組件中單獨應用

<template>
 2   <div id="app">
 3     <div id="cesiumContainer"></div>
 4   </div>
 5 </template>
 6 
 7 <script>
 8 import Cesium from 'cesium/Cesium'
 9 import 'cesium/Widgets/widgets.css'
10 export default {
     ...
12 mounted () {
13     this.initMap()
17 } 
   methods:{
     initMap(){
      const viewer = new Cesium.Viewer('cesiumContainer' )   
console.log(viewer) } }
19 </script> 20 <style> 21 28 #app,#cesiumContainer { 30 width: 100%; 31 height: 100%; 32 overflow: hidden; 33 } 34 </style>

 6.或者在main.js中全局註冊

//全局引用cesium
import Cesium from "cesium/Cesium";
import"../node_modules/cesium/Source/Widgets/widgets.css";

//全局註冊變量
Vue.prototype.Cesium=Cesium;
相關文章
相關標籤/搜索