vue2.0项目集成Cesium的实现方法

安装cesium

在已有项目中执行,

npm i cesium

修改配置

build/webpack.base.conf.js

1、定义 Cesium 源码路径

const cesiumSource = \'../node_modules/cesium/Source\'

\'use strict\'
const path = require(\'path\')
const utils = require(\'./utils\')
const config = require(\'../config\')
const vueLoaderConfig = require(\'./vue-loader.conf\')
//--cesium--配置
const cesiumSource = \'../node_modules/cesium/Source\'; 

2、在output 里加入sourcePrefix: \’ \’ 让webpack 正确处理多行字符串

3、配置 amd参数

4、module中在rules后添加 unknownContextCritical: false,

module.exports = {
  context: path.resolve(__dirname, \'../\'),
  entry: {
    app: [\"babel-polyfill\", \'./src/main.js\']
  },
  output: {
    path: config.build.assetsRoot,
    filename: \'[name].js\',
    publicPath: process.env.NODE_ENV === \'production\' ?
      config.build.assetsPublicPath : config.dev.assetsPublicPath,
    //--cesium--配置------------------------------------
    sourcePrefix: \' \'
  },
  //--cesium--配置----------------------------------------
  amd:{
    toUrlUndefined: true
  },
  resolve: {
    extensions: [\'.js\', \'.vue\', \'.json\'],
    alias: {
      \'vue$\': \'vue/dist/vue.esm.js\',
      \'@\': resolve(\'src\'),
      //--cesium--配置
      \'cesium\': path.resolve(__dirname, cesiumSource)
    }
  },
  module: {
    rules: [
    ...
    ],
    //--cesium--配置-------------------------------------
    //unknownContextRegExp: /^.\\/.*$/
    unknownContextCritical: false,
  }
}

build/webpack.dev.conf.js

1、定义 Cesium 源码路径和Cesium Workers 路径

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

(注意这里的 node_modules 与webpack.base.conf.js的不同,前面没有../)

2、定义CESIUM_BASE_URL变量

3、在plugins 中加入下面插件,拷贝静态资源

plugins: [
  new webpack.DefinePlugin({
   \'process.env\': require(\'../config/dev.env\'),
   //--cesium--配置-------------------------------------------
   \'CESIUM_BASE_URL\': JSON.stringify(\'\') 
  }),
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  new HtmlWebpackPlugin({
   filename: \'index.html\',
   template: \'index.html\',
   inject: true
  }),
  //--cesium--配置---------------------------------------------
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: \'Workers\' } ]),   //flag
  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 CopyWebpackPlugin([ { from: \'ThirdParty\', to: \'ThirdParty\' } ]),

  // copy custom static assets
  new CopyWebpackPlugin([
   {
    from: path.resolve(__dirname, \'../static\'),
    to: config.dev.assetsSubDirectory,
    ignore: [\'.*\']
   }
  ])
 ]

build/webpack.prod.conf.js

1、定义

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

2、定义\’CESIUM_BASE_URL\’变量

3、在plugins 中加入下面插件,拷贝静态资源

plugins: [
  // http://vuejs.github.io/vue-loader/en/workflow/production.html
  new webpack.DefinePlugin({
   \'process.env\': env,
   //--cesium--配置--------------------------------------
   \'CESIUM_BASE_URL\': JSON.stringify(\'static\')
  }),
  ...
  new HtmlWebpackPlugin({
    ...
  },
  //--cesium--配置--------------------------------------
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: \'static/Workers\' } ]),//flag
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, \'Assets\'), to: \'static/Assets\' } ]),
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, \'Widgets\'), to: \'static/Widgets\' } ]),
  new CopyWebpackPlugin([ { from: path.join(cesiumSource, \'ThirdParty/Workers\'), to: \'ThirdParty/Workers\' } ]),
  new CopyWebpackPlugin([ { from: \'ThirdParty\', to: \'ThirdParty\' } ]),
  ...

ThirdParty

在项目根目录新建文件夹ThirdParty,放入draco_decoder.wasm文件,在加载gltf模型文件需要用到

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容