一、使用vue-cli搭建项目
参考:http://t.csdn.cn/i0AuP
二、引入cesium
1.引入cesium库
使用vscode打开项目,在控制台输入(以1.80.0为例)
npm install cesium@1.80.0 -D
2.修改main.js文件,添加以下内容
let Cesium = require('cesium/Cesium');
let widgets= require('cesium/Widgets/widgets.css');
Vue.prototype.Cesium = Cesium
Vue.prototype.widgets = widgets
3.在项目文件夹下新建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 = {
// 基本路径 3.6之前的版本时 baseUrl
publicPath: "./",
// 输出文件目录
outputDir: "dist",
// eslint-loader 是否在保存的时候检查
lintOnSave: false,
// webpack-dev-server 相关配置
devServer: {
open: process.platform === "darwin",
host: "0.0.0.0",
port: 80,
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: {
//unknownContextRegExp: /^.\/.*$/,
unknownContextCritical: false
}
}
};
三、新创建测试代码
1.在views文件夹下创建Cesiumdemo.vue
<template>
<div id="container" class="box">
<div id="cesiumContainer"></div>
</div>
</template>
<script>
export default {
name: 'cesiumPage',
data () {
return {
}
},
mounted(){
var Cesium = this.Cesium;
var cesiumContainer = document.getElementById("cesiumContainer");
var viewer = new Cesium.Viewer("cesiumContainer",{
//加载在线谷歌地图
imageryProvider: new Cesium.UrlTemplateImageryProvider({
url:"http://www.google.cn/maps/vt?lyrs=s&x={x}&y={y}&z={z}"
})
})
//去除 版权图标
viewer._cesiumWidget._creditContainer.style.display="none";
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
html,
body,
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
.box {
height: 100%;
}
</style>
2.修改App.vue文件
<template>
<div id="app">
<router-view/>
</div>
</template>
<style lang="scss">
html,
body,
#app {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
color: #000;
overflow: hidden;
}
</style>
3.修改路由router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import CesiumScene from '../views/Cesiumdemo.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'scene',
component: CesiumScene
}
]
const router = new VueRouter({
// mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
4.启动项目
npm run serve