美文网首页
vue2 集成 Cesium

vue2 集成 Cesium

作者: jadefan | 来源:发表于2019-06-26 16:59 被阅读0次

    1、安装cesium

    在已有项目中执行,

    npm install cesium
    

    2、修改配置文件

    build/webpack.base.conf.js

    1、定义 Cesium 源码路径

    '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模型文件需要用到

    helloworld示例

    可参考官网新手指导:https://cesium.com/docs/tutorials/cesium-workshop/

    相关文章

      网友评论

          本文标题:vue2 集成 Cesium

          本文链接:https://www.haomeiwen.com/subject/qbxhcctx.html