VueCli 3.X 集成 Cesium - Cesium 开发笔记 01篇

最近公司竞标拿到了一个和海有关的项目,要做一个【二、三维展示分析系统】,应用层选用  Vue + Cesium + Element  作为技术支持,服务层选用 ArcGIS Server 作为GIS服务支持,数据库选用 Oracle 作为数据支持 ,涉及到的功能类型有展示、控制、分析、对比、打印、计算。。。。。。 太多了(后续功能跟着开发进度慢慢更新吧)


前方正文👇

             首先你应该有一些环境(如:node、Vue、Vue-cli 3.x 等),没有的话请自行查阅安装(百度安装教程很多很简单)

开始搭建项目

     一、环境说明

个人环境

     二、创建vue项目  

// 在想要创建项目的目录下打开cmd,执行下面内容 (project 为项目命名)     
vue create project

    

    注:空格键是选中与取消,A键是全选

仅是个人选择
选完后就这样

     三、引入Cesium

    在这里 有俩种引入cesium的方案,方案一是通过npm安装,方案二是在前面搭建好的项目中的public文件中引用cesium文件夹,具体操作请往下看

方案一:

    1. 安装Cesium依赖

npm i cesium --save

    2. 在项目的   -根目录   新增    配置文件    vue.config.js

const CopyWebpackPlugin = require('copy-webpack-plugin')
const webpack = require('webpack')
const path = require('path')

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

module.exports = {
  publicPath: "./",
  outputDir: "dist",
  lintOnSave: false,
  devServer: {
    open: process.platform === "darwin",
    host: "0.0.0.0",
    port: 1205,
    https: false,
    hotOnly: false
  },
  configureWebpack: {
    output: {
      sourcePrefix: ' '
    },
    amd: {
      toUrlUndefined: true
    },
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': path.resolve('src'),
        'cesium': path.resolve(__dirname, cesiumSource)
      }
    },
    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' }]),
      new webpack.DefinePlugin({
        CESIUM_BASE_URL: JSON.stringify('./')
      })
    ],
    module: {
      unknownContextCritical: /^.\/.*$/,
      unknownContextCritical: false
    }
  }
};

    3. 在 main.js 中新增引用

import Cesium from 'cesium/Cesium' //from 中 cesium 指向的是vue.config.js中 alias对象中的别名
// noinspection ES6UnusedImports
import widget from 'cesium/Widgets/widgets.css'

Vue.prototype.Cesium = Cesium
Vue.prototype.widgets = widgets

方案二:

    1. 在前面搭建好的项目中的public文件中引用cesium文件夹

补充:有人私信问我为什么从官网下载的Cesium文件夹里的这四个文件不能用,确认原因后特地回来补充,要用官方文件夹下  Build  >> Cesium   下的这几个文件,而不是!而不是!而不是!  Source 文件夹里的这几个文件 

  

 2. 在  index.html  页面中 引入

<!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.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>

    //  第一处引入
    <link rel="stylesheet" href="Cesium/Widgets/widgets.css">

  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>

    //  第二处引入
    <script src="Cesium/Cesium.js"></script>

  </body>
</html>

  最后。。。在vue中初始化一个容器存放内容,看到地球就成功了

<div id="CesiumViewer"></div>
//CesiumViewer 为地图容器的ID
let viewer = new Cesium.Viewer('CesiumViewer',{
	geocoder: false, // 搜索框
	baseLayerPicker: false, // 切换底图
	navigationHelpButton: false, // 帮助信息
	animation: false, // 动画控件(左下角)
	timeline: false, // 时间线  -- false时 数据源 viewer 的timeline值为空 无法支持调用 会导致error
	homeButton: false, // home键
	sceneModePicker: false, // 切换 2D、2.5D、3D (投影方式)
	fullscreenButton: false, // 全屏显示
	selectionIndicator: false, // 屏蔽鼠标点击触发的绿色瞄准框
	infoBox: false,  // 信息提示框不显示
	shouldAnimate: true,   //  动画自启动
})
//去除 版权图标
viewer._cesiumWidget._creditContainer.style.display="none";

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值