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

作者:林珞 时间:2024-06-07 15:22:22 

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

来源:https://segmentfault.com/a/1190000019909927

标签:vue2,集成,Cesium
0
投稿

猜你喜欢

  • 在python的类中动态添加属性与生成对象

    2021-04-27 00:26:59
  • vue实现触底查询功能

    2024-04-30 10:25:01
  • 使用python装饰器验证配置文件示例

    2022-05-27 03:10:11
  • 无阻塞加载脚本分析[全]

    2024-04-17 10:25:35
  • Ubuntu下MySQL安装及配置远程登录教程

    2024-01-23 23:55:33
  • MySQL锁(表锁,行锁,共享锁,排它锁,间隙锁)使用详解

    2024-01-20 12:07:17
  • Python数字图像处理基础直方图详解

    2021-02-12 08:21:55
  • Python操作MySQL数据库实例详解【安装、连接、增删改查等】

    2024-01-21 15:55:47
  • Pandas数值排序 sort_values()的使用

    2023-02-21 01:12:02
  • 5个有趣的浏览器地址栏Javascript代码

    2008-07-21 13:04:00
  • Keras自定义实现带masking的meanpooling层方式

    2021-06-23 03:29:47
  • pyqt5圆形label显示打开的摄像头功能

    2022-09-16 04:10:21
  • 完整java开发中JDBC连接数据库代码和步骤

    2024-01-21 19:27:23
  • .NET中开源文档操作组件DocX的介绍与使用

    2024-06-05 09:28:18
  • python 与服务器的共享文件夹交互方法

    2021-02-10 14:29:02
  • Python 解析pymysql模块操作数据库的方法

    2021-05-07 07:46:13
  • python切换hosts文件代码示例

    2023-07-19 15:41:43
  • 如何更改mysql命令下提示信息

    2010-10-25 19:48:00
  • python线程安全及多进程多线程实现方法详解

    2023-08-27 02:01:54
  • Python+LyScript实现自定义反汇编

    2021-02-07 11:57:47
  • asp之家 网络编程 m.aspxhome.com