当前位置: 代码迷 >> 综合 >> vue + cesium 环境搭建
  详细解决方案

vue + cesium 环境搭建

热度:9   发布时间:2023-12-21 06:17:42.0

版本:

vue v2.5.2

cesium v1.68.0

开发工具使用vscode

 

node、vue-cli等安装步骤网上都说烂了,这里就不说了。

下载webpack模板项目,安装cesium依赖

在自己喜欢的位置创建测试文件夹,这里我用的cesiumDemo,拖入vscode中,右键“在终端中打开”。

在终端中输入

就能下载适合新手开发的vue项目了

test是项目名 可以自定义

等下完后,继续终端输入

cd test

正式进入项目内,继续输入

npm install cesium --save

下载cesium依赖。

 

集成cesium

按照网上文章,大体如下:

配置webpack.base.conf.js文件

// 定义Cesium源码路径
const cesiumSource = '../node_modules/cesium/Source'

如果运行时报 "Cannot find module "." 可以考虑将 unknownContextRegExp 放开。

配置 webpack.dev.conf.js 文件

// 定义Cesium源码路径
const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers'

这里cesium找的是依赖包里的Source文件夹(下的js入口),对应的cesiumWorkers则是在cesiumSource基础上去Workers目录下引用具体的类文件噢,看不懂相对路径的同学可以再重温一下。

在plugins下新增如下插件,拷贝静态资源

 

配置 webpack.prod.conf.js 文件

// 定义Cesium源码路径
const cesiumSource = 'node_modules/cesium/Source'
const cesiumWorkers = '../Build/Cesium/Workers'

同样在plugins中添加插件

需要注意的是 CESIUM_BASE_URL这里需要用相对路径,所以要用stringify('./'),否则会拼接成绝对路径。

创建cesium组件并引用

创建cesiumView组件。

<template><div id="cesiumContainer"></div>
</template><script>
import '../../node_modules/cesium/Build/Cesium/Widgets/widgets.css'
export default {name: 'cesiumView',mounted () {var view = new this.Cesium.Viewer('cesiumContainer')}
}
</script><style scoped></style>

 

修改App.vue

<template><div id="app"><!-- <img src="./assets/logo.png"> --><cesiumView/></div>
</template><script>
import cesiumView from './components/cesiumView'
export default {name: 'App',components: {'cesiumView': cesiumView}
}
</script><style>
/* //保证浏览器全屏幕显示,没有多余的白边 */
html, body, #cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;
}
#app {font-family: 'Avenir', Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;/* margin-top: 60px; */
}
</style>

 

修改router/index.js

import Vue from 'vue'
import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'
import cesiumView from '@/components/cesiumView'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'cesiumView',component: cesiumView}]
})

 

修改main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
// import '../node_modules/cesium/Build/Cesium/Widgets/widgets.css'
// import Cesium from 'cesium/Cesium'
var Cesium = require('cesium/Cesium')
// import 'cesium/Cesium/Widgets/widgets.css'
Vue.config.productionTip = falseVue.prototype.Cesium = Cesium
/* eslint-disable no-new */
new Vue({el: '#app',router,components: { App },template: '<App/>'
})

 

需要注意的是,网上其他文章说的是 import Cesium from 'cesium/Cesium',但我试了不行,发现提示异常

这是因为我下的是cesium1.68版本,新版本不支持整体import,可以用require方式。

 

还有我看网上说

我还没打包不好验证真伪,也有说修改dev配置项的assetsPublicPath,也改成 '' 的,但我没改发现也能运行。

 

参考文章:

https://blog.csdn.net/u011347088/article/details/83090527

https://blog.csdn.net/weizhixiang/article/details/104473856

https://www.jianshu.com/p/248a904dbb34

https://blog.csdn.net/li11122212/article/details/93167685