Vue+ElementUI框架集成Cesium

electron+vue+elementui+cesium环境搭建 electron+vue+elementui+cesium环境搭建 nodejs安装(可以百度怎么安装) 安装之后查看版本 node -v 我的nodejs版本 14.15.1 安装vue/cli脚手架 npm install -g @vue/cli //查看版本 vue -V 我的版本时4.5.11 全局安装yarn npm i yarn -g yarn安装随意,不想安装也可以搭建(至于yarn和npm的区别,此处不再赘述。可以百度查看一下) vue create创建项目 vue create m 阅读详情

版本信息

1.Vue-cli:2.9.6
2.element-ui:2.13.0
3.Cesium:1.64.0

流程

集成流程

Vue+ElementUI安装

请查考Vue-cli+ElementUI环境搭建

Cesium安装

使用npm安装

npm install cesium --save

Cesium与Vue集成配置

webpack.base.conf.js配置

1.在文件开头添加Cesium的Source路径

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的Source路径
const cesiumSource = '../node_modules/cesium/Source'

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}
......

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

 output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath,
    //Needed to compile multiline string in cesium------
    sourcePrefix: ' '
  },

3.添加amd

  amd: {
    // Enable webpack-friendly use of require in cesium
    toUrlUndefined: true
  },

4.设置cesium的别名
在resolve中添加Cesium的别名:

'cesium': path.resolve(__dirname, cesiumSource)

resolve中的内容如下:

 resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      //设置cesium的别名
      'cesium': path.resolve(__dirname, cesiumSource)
    }
  },

5.添加rule规则

 //过滤掉运行过程中cesium的错误信息
 {
    test: /\.js\.map$/,
    use: [{
      loader: 'file-loader'
    }]
  }

6.去掉webpack打印载入特定库时的警告

 //不让webpa打印载入特定库时候的警告
 unknownContextRegExp: /^.\/.*$/,
 unknownContextCritical: false

webpack.dev.conf.js配置

1.在文件头部添加cesium源码与workers路径

//定义cesium源代码路径,前面没有.../
const cesiumSource = 'node_modules/cesium/Source'
//定义cesium workers路径
const cesiumWorkers = '../Build/Cesium/Workers'

2.在plugins new webpack.DefinePlugin中添加CESIUM_BASE_URL

 new webpack.DefinePlugin({
      'process.env': require('../config/dev.env'),
      // Define relative base path in cesium for loading assets
      CESIUM_BASE_URL: JSON.stringify('')
    }),

3.在plugins中添加将Cesium Assets,Widgets和Workers拷贝到static目录下的配置

    // Copy Cesium Assets, Widgets, and Workers to a static directory
    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'
    }]),

最终plugins内容如下:

 plugins: [
    new webpack.DefinePlugin({
      'process.env': require('../config/dev.env'),
      // Define relative base path in cesium for loading assets
      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
    }),
      // Copy Cesium Assets, Widgets, and Workers to a static directory
    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'
    }]),

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

webpack.prod.conf.js配置

1.定义Cesium源代码和workers路径

//定义cesium源代码路径,前面没有.../
const cesiumSource = 'node_modules/cesium/Source'
//定义cesium workers路径
const cesiumWorkers = '../Build/Cesium/Workers'

2.定义CESIUM_BASE_URL

  new webpack.DefinePlugin({
      'process.env': env,
      //--cesium--配置
      CESIUM_BASE_URL: JSON.stringify('./')
    }),

3.在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'
    }]),

最终plugins内容如下:

 plugins: [
     // Copy Cesium Assets, Widgets, and Workers to a static directory
    // Copy Cesium Assets, Widgets, and Workers to a static directory
    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'
    }]),

    // http://vuejs.github.io/vue-loader/en/workflow/production.html
    new webpack.DefinePlugin({
      'process.env': env,
      //--cesium--配置
      CESIUM_BASE_URL: JSON.stringify('./')
    }),
    new UglifyJsPlugin({
      uglifyOptions: {
        compress: {
          warnings: false
        }
      },
      sourceMap: config.build.productionSourceMap,
      parallel: true
    }),
    // extract css into its own file
    new ExtractTextPlugin({
      filename: utils.assetsPath('css/[name].[contenthash].css'),
      // Setting the following option to `false` will not extract CSS from codesplit chunks.
      // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
      // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, 
      // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
      allChunks: true,
    }),
    // Compress extracted CSS. We are using this plugin so that possible
    // duplicated CSS from different components can be deduped.
    new OptimizeCSSPlugin({
      cssProcessorOptions: config.build.productionSourceMap
        ? { safe: true, map: { inline: false } }
        : { safe: true }
    }),
    // generate dist index.html with correct asset hash for caching.
    // you can customize output by editing /index.html
    // see https://github.com/ampedandwired/html-webpack-plugin
    new HtmlWebpackPlugin({
      filename: process.env.NODE_ENV === 'testing'
        ? 'index.html'
        : config.build.index,
      template: 'index.html',
      inject: true,
      minify: {
        removeComments: true,
        collapseWhitespace: true,
        removeAttributeQuotes: true
        // more options:
        // https://github.com/kangax/html-minifier#options-quick-reference
      },
      // necessary to consistently work with multiple chunks via CommonsChunkPlugin
      chunksSortMode: 'dependency'
    }),
    // keep module.id stable when vendor modules does not change
    new webpack.HashedModuleIdsPlugin(),
    // enable scope hoisting
    new webpack.optimize.ModuleConcatenationPlugin(),
    // split vendor js into its own file
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendor',
      minChunks (module) {
        // any required modules inside node_modules are extracted to vendor
        return (
          module.resource &&
          /\.js$/.test(module.resource) &&
          module.resource.indexOf(
            path.join(__dirname, '../node_modules')
          ) === 0
        )
      }
    }),
    // extract webpack runtime and module manifest to its own file in order to
    // prevent vendor hash from being updated whenever app bundle is updated
    new webpack.optimize.CommonsChunkPlugin({
      name: 'manifest',
      minChunks: Infinity
    }),
    // This instance extracts shared chunks from code splitted chunks and bundles them
    // in a separate chunk, similar to the vendor chunk
    // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
    new webpack.optimize.CommonsChunkPlugin({
      name: 'app',
      async: 'vendor-async',
      children: true,
      minChunks: 3
    }),

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

测试

在HelloWorld.vue中添加代码

<template>
  <div class="hello">
    <div id = 'cesiumContainer'></div>
  </div>
</template>

<script>
import * as Cesium from 'cesium/Cesium';
import widgets from 'cesium/Widgets/widgets.css';

export default {
  name: 'HelloWorld',
  data () {
    return {

    };
  },
  mounted () {
    var viewer = new Cesium.Viewer('cesiumContainer');
  }
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

运行程序,可看到如下界面,说明配置成功。
测试界面
扫描下方二维码,关注微信公众号,精彩内容同步更新,有问题可随时交流
微信公众号

创建electron+vue+cesium项目 electron+vue+cesium 阅读详情

相关推荐

使用Cesium加载3DTiles并进行调整

3dtiles简介 3D Tiles是用于流式传输大规模异构3D地理空间数据集的开放规范。为了扩展Cesium的地形和图像流,3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据。 3D Tiles是目前大火的开源WebGL框架Cesium的御用格式。根据实际体验,3D Tiles和二维地图中的瓦片组织非常相似,在网络中查看3D模型的话,3DTiles的效果还是很不错的,下面我们就来讲一下如何使用vue框架实现cesium加载3dtiles,以及实现对3dtiles的调整组件。 cesi

On the way 7904

vue开发案例:vue、elementUI、openlayers、cesium、echarts整合开发

基于vue + elementUI + openlayers + cesium开发 功能展示: 风场可视化

碰碰的博客 2540

05 vue+cesium页面功能布局

需要安装饿了么的Element-UI皮肤插件,本工程是基于vue2版本,所以我安装指定版本的能适配vue2的Element-UI版本。如图所示:布设好的静态功能区:初步用统一图标展示,后期逐渐加功能逐渐更换图标,头部展示logo信息,底部展示状态信息。

挣钱花388的博客 962

Vue2+Cesium+elementUI项目文件

网上搜了很多教程,有很多坑,Cesium官方并没有给出特别明确的指示,配置过程一言难尽。项目引入Cesium是添加依赖包的形式,跟常规的依赖包差不多,但只npm install cesium是远远不够的,还需要在vue.config.js文件和其他文件中写相应配置。启动项目主页即可看到Cesium地图,我去除了Cesium图标和其他小组件,只有纯粹的地图,开发者后期自行添加。近期工作需要,要在Vue-cli项目上集成地图开发,比较熟悉Cesium,因此想把Cesium集成到Vue项目中。

zhaipx的博客 275

Cesium 3 ,使用 Vue + Cesium 和 Element实现可拖拽视频弹框,并使用 mixins 混入特性实现(在 Cesium 上实现可拖拽的实时视频播放弹框,底层元素可以正常操作)

⭐在前端 GIS 领域,特别是在Cesium平台上,实现一个既能拖动,又能播放实时视频的弹框是提升用户体验的关键。这里分享记录,如何利用 VueJS 和 Element UI 构建这样一个弹窗,并通过 mixins 混入视频播放功能,同时确保拖拽弹框时,底层元素仍可交互。

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 2111

DEJA_VU3D - Cesium功能集 之 074-自定义工程树组件

本篇我们来介绍实现基于Cesium,结合VUE + elementUI实现自定义工程树的效果,包括数据控制显隐,定位已经属性窗口展示,包括完整源代码

总得学点什么的博客 1664

vue3+cesium1.83+typescript+elementui搭建三维GIS系统开发框架,附完整代码链接

vue3+cesium1.83搭建三维GIS系统开发框架写在前面开始搭建方式一(Cesium作为全局变量)方式二(局部导入)成果图 写在前面 已经搭建VUE开发框架的基础上,搭建此框架 开始搭建 通过npm安装cesium npm install cesium 将npm安装目录下的\node_modules\cesium\Build\Cesium所有文件拷贝至public下的新建文件夹Cesium 在index.htnl中引入js和css文件 <link rel="stylesheet" hre

ONEGISER的博客 3522

Vue-Cesium集成模板 - 3D地图与Web应用开发实践

本文还有配套的精品资源,点击获取 简介:本项目模板基于Vue CLI 4.5和Cesium 1.82版本,为开发者提供一个快速搭建3D地图展示及数据交互Web应用的平台。它集成了axios、pubsub-js、Element UI和Vue Router等实用库,以支持HTTP请求、组件间通信、前端界面设计和路由管理。此模板旨在简化开发流程,提升开发效率,并确保应用性能和可维...

weixin_30205153的博客 837

vue+Cesium学习笔记——wsdchong

Cesium学习笔记 由于工作过程中需要用到cesium,于是学习一下,记录一下学习笔记。 gitee上写了一下这个例子,后期如果在cesium上深入的话,会补充cesium的其他例子。

wsdchong的博客 2228

EB Tresos激活失败?3种实用解决方案帮你搞定(含离线激活步骤)

本文针对EB Tresos软件激活失败问题,提供了三种实用的解决方案。详细分析了激活失败的常见根源,并系统阐述了在线环境下的排查步骤、无网环境下的离线激活全流程,以及高级许可证环境修复方法,帮助汽车电子工程师快速恢复开发环境。

milk8的博客 609

有限状态机FSM详解(一)

有限状态机在维基百科中的解释是: 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 至于为什么要学FSM,FSM可以把模型的多状态、多状态间的转换条件解耦。可以使维护变得容易,代码也更加具有可读性,也更加艺术。 理解有限状态机首先需要理解整个模型。我们把灯的开关作为示例,...

benjonc的博客 5万+

(二)、ruoyi-vue3+cesium配置

注:Cesium的插件:vite-plugin-cesium的网址如下所示安装后package.json文件中cesium及vite-plugin-cesiu相关版本如下:},

qq_39063658的博客 993

HALCON基于描述符的模板匹配(未标定)

HALCON基于不标定描述符的模板匹配

king_linj的博客 890

Cesium爬坑记录(vue+cesium+element)

首先呢,之前搭建好了一个dome但是不知道因为点啥引用czml的时候一直报404所以在重新搞一波,顺便记录一下我的爬坑之路。 安装 安装nodejs 之前已经安装过了就不放图了,没有安装的快充去搜一下。略~ 安装Vue-cli脚手架 同上 新建项目 vue init webpack cesium-demo 然后无脑敲回车就好了,可以根据自己的需求决定要不要使用eslint和单元...

就是个弟弟的博客 3596

CentOS 7下Multipath多路径存储的实战配置与性能优化

本文详细介绍了在CentOS 7系统中配置与优化Multipath多路径存储的完整实战流程。从安装部署、核心配置文件解读,到性能调优与生产环境避坑指南,全面解析如何利用Device Mapper Multipath构建高可用、负载均衡的存储链路,提升存储系统可靠性与I/O性能。

weixin_29278805的博客 320

AD5940阻抗测量开发板实战:从源码获取到工程调试全解析

本文详细解析了AD5940阻抗测量开发板的实战应用,从源码获取到工程调试的全过程。AD5940作为ADI公司的高精度阻抗测量前端芯片,适用于生物阻抗分析、电化学传感器等领域。文章提供了开发环境搭建、工程配置、常见问题排查及进阶调试技巧,帮助开发者快速掌握AD5940开发板的使用方法。

weixin_30919429的博客 212

Cesium 简单航飞线路规划,模拟飞行扫描效果

Cesium 简单航飞线路规划,模拟飞行扫描效果。

Zk的博客 7674

化工过程设计软件:Aspen Plus二次开发_(2).二次开发概述

假设我们需要创建一个自定义的换热器模型,该模型能够计算两个物流之间的热交换量,并根据传热系数和换热面积进行调整。ACM 模型代码示例!自定义换热器模型!参数:传热系数 U (W/m^2·K)!换热面积 A (m^2)!热物流 T_hot_in (K), T_hot_out (K), F_hot (kmol/h)!冷物流 T_cold_in (K), T_cold_out (K), F_cold (kmol/h)!模型输入!U - 传热系数!A - 换热面积!

kkchenjj的博客 367

别再只会改颜色了!Cesium模型属性实战:用ElementUI做个实时调色盘

本文介绍了如何利用Cesium和ElementUI构建一个实时调色盘,实现3D模型属性的可视化调试。通过详细的代码示例和实战技巧,帮助开发者突破基础颜色修改的局限,提升数字孪生和智慧城市项目的开发效率。

weixin_33670786的博客 216

AI 辅助编程全景:演进、提效场景与未来趋势

本文系统梳理了AI辅助编程的发展历程与应用场景。演进路径分为三代:从代码补全工具(2023)、对话式助手(2024)到自主编程代理(2025)。在软件全生命周期中,AI可显著提升各环节效率:需求分析阶段节省30-60%文档编写时间;设计阶段缩短40-60%技术调研周期;编码阶段通过智能补全提升55%任务速度;测试阶段减少30-60%测试编写时间。数据显示,2025年84%开发者使用AI工具,41%代码由AI生成,平均每周节省3.6小时。AI正推动开发者角色从编写者转变为审核者,但复杂业务逻辑和架构设计仍需人

甘蓝的专栏 472

基于Gurobi的综合能源系统运行优化:鲁棒两阶段优化方法

本文提出了一种基于Gurobi的综合能源系统鲁棒两阶段优化方法,针对包含换电站、光伏发电和电池储能的系统运行问题。研究采用多面体不确定性集合描述光伏出力随机性,构建了考虑电池衰减成本和弃光惩罚的两阶段优化模型:第一阶段制定日前调度计划,第二阶段处理实时运行中的不确定性。通过列与约束生成算法求解模型,并使用Python和Gurobi实现。仿真验证了该方法能有效平衡系统经济性与鲁棒性,为含高比例可再生能源的综合能源系统运行提供了实用解决方案。

huanghm88的专栏 242

Vue2-Cesium:搭建环境

vite-element-template: 这是一个基于vite的极简 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。先准备一个干净的vue2模板,这里使用misaka vite启动的vue2模板。最后新建一个页面,页面容器做好,实例化一个cesium对象可以了。然后在index.html里全局引入cesium的js和css。工作需要,刚好从零记录一下过程。

xiaoyuhuahua9的博客 768

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

cesium-天际线

【代码】cesium-天际线。

zslsh44的专栏 760

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Vue-Cesium-Demo 项目教程

Vue-Cesium-Demo 项目教程 1. 项目的目录结构及介绍 vue-cesium-demo/ ├── public/ # 公共资源目录 │ └── index.html # 项目入口HTML文件 ├── src/ # 源代码目录 │ ├── assets/ # 静态资源文件(如图片、样...

gitblog_00333的博客 557

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

DMapT-基于Cesium+NodeJS瓦片地图下载工具

- 狗狗地图工具,基于Cesium+NodeJS瓦片地图下载工具,可下载指定区域的离线地图瓦片,支持天地图、高德地图,可扩展其他地图

renyuhost的博客 1070

Cesium 飘动的国旗

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-.

henghahouhei的博客 390
上一篇: 基础篇-GeoServer安装与配置
下一篇: MapBox GL本地化开发部署
giscoder
博客等级 码龄7年 20粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值