本文小编为大家详细介绍“vue中怎么安装使用cesium”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中怎么安装使用cesium”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
专门为脚手架vue-cli3.0和2.0打造的针对Cesium的VueCli扩展插件,自动化包括:
1.自动扩展 VueCLI 中 Cesium 相关的 webpack 配置
2.添加一个 cesium 别名,以便我们在项目中轻松的引入 Cesium 文件资源
使 Cesium 对象实例可在每个 Vue 模块中使用而无须 import 引入
使 webpack 可正常打包 Cesium
允许 webpack 友好地在 Cesium 中使用 require,解决 require 引入警告
开发环境生成 sourcemap,生产环境取消 sourcemap
生产环境抽取公共模块执行压缩
生产环境 loader 切换到优化模式
3.自动在全局 main.js 中引入Widgets.css,可选
4.自动在 components/ 文件夹下生成示例文件,可选
自动扩展 VueCLI 中 Cesium 相关的 webpack 配置
使用方式1:
推荐使用 vue add 这种方式安装,一步到位,简单便捷 vue add vue-cli-plugin-cesium // 非全局安装的vue-cli可以 npx vue add vue-cli-plugin-cesium
使用方式2:
首先安装 vue-cli-plugin-cesium 插件,推荐使用 yarn 安装,因为它更简洁 // npm npm install --save-dev vue-cli-plugin-cesium // yarn yarn add vue-cli-plugin-cesium 安装完成后我们要使用 vue invoke 来初始化这个插件 vue invoke vue-cli-plugin-cesium // 非全局安装的vue-cli可以 npx vue invoke vue-cli-plugin-cesium
安装过程中出现的3个问题:
(1)版本选择最新版本
(2)是否全局引入样式,该操作将自动在main.js引入widgets.css? yes
(3)是否添加示例组件到项目components目录? yes
/node_modules/cesium/Source/ThirdParty/zip.js" 这个文件不能打包 解决办法:package.json中"dependencies": { "cesium": "1.80.0" }版本切换为1.80.0,目前1.85.0会报错
// 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", // eslint-loader 是否在保存的时候检查 lintOnSave: false, // webpack-dev-server 相关配置 devServer: { open: process.platform === "darwin", host: "0.0.0.0", port: 8082, 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: { //解决Critical dependency: require function is // used in a way in which dependencies cannot be statically extracted的问题 unknownContextCritical: false } }, chainWebpack: config => { const oneOfsMap = config.module.rule('scss').oneOfs.store oneOfsMap.forEach(item => { item .use('sass-resources-loader') .loader('sass-resources-loader') .options({ // Provide path to the file with resources // 要公用的scss的路径 resources: './src/assets/css/global.scss' }) .end() }) }, }
可以直接引入我的vue.config.js,显示插件未安装时,只需要删除依赖包,直接yarn重新下载依赖即可
最后贴上我的页面使用代码:
<template> <div class="map-box"> <div id="cesiumContainer"></div> </div> </template> <script> export default { name: "", mounted() { // var viewer = new Cesium.CesiumWidget('cesiumContainer') // eslint-disable-next-line no-undef var viewer = new Cesium.Viewer("cesiumContainer"); // eslint-disable-next-line no-console console.log(viewer) } }; </script> <style scoped> .map-box{ width: 100%; height: 100%; } #cesiumContainer{ width: 100%; height: 100%; } </style>
完整使用代码:
<template> <div class="cc-model-move-"> <cc-header :headtitle="'ModelMove(模型移动)'" /> <cc-scroll> <div class="map-box"> <div id="cesiumContainer"></div> </div> <!-- <CesiumViewer /> --> </cc-scroll> </div> </template> <script> const COMPONENT_NAME = "dialog-from"; // import * as Cesium from "cesium"; // import "cesium/Build/Cesium/Widgets/widgets.css"; // import CesiumViewer from '../../components/CesiumExample/No01-init' import ccHeader from "../../components/cc-header/cc-header.vue"; import ccScroll from "../../components/cc-scroll/cc-scroll.vue"; export default { name: COMPONENT_NAME, components: { ccHeader, ccScroll, // CesiumViewer }, props: {}, data() { return {}; }, mounted() { this.initView(); }, methods: { initView() { // var viewer = new Cesium.Viewer("cesiumContainer") // console.log(viewer, "viewer"); const vmodels = Cesium.createDefaultImageryProviderViewModels() var token = "0b018552994f71a9467d24461a8f8238"; Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzZjQ0Mjg3Yy05ZDcxLTQyZDAtYTY3Yy03YmI0MDM3MDZhMjgiLCJpZCI6NzI3NjQsImlhdCI6MTYzNjM2MDU3MH0.yEsenwMWNDoP9-4CoT77mLJpJNJKtbiDSaD9jiv5O8s"; var viewer = new Cesium.Viewer("cesiumContainer", { geocoder: true, // homeButton:视角返回初始位置 homeButton: true, // sceneModePicker:选择视角的模式,分别为3d,2d,哥伦布视图 sceneModePicker: true, // baseLayerPicker:图层选择器,选择要显示的地图服务和地形服务 baseLayerPicker: true, // navigationHelpButton:导航帮助按钮,显示默认的地图控制帮助 navigationHelpButton: true, // animation:动画器件,控制视图动画的播放速度 animation: true, // creditContainer:版权显示,显示数据归属,必选 // creditContainer: "credit", // timeline: 时间线设置,控制视图动画的播放速度 timeline: true, // fullscreenButton: 全屏按钮 fullscreenButton: true, // vrButton: vr按钮 vrButton: true, imageryProviderViewModels: vmodels, // selectedImageryProviderViewModel: 选择基础图象层的视图模型 selectedImageryProviderViewModel: vmodels[1], }); viewer.scene.debugShowFramesPerSecond = true; // 显示帧速(fps) } } }; </script> <style scoped> .map-box { width: 100%; height: 100%; } #cesiumContainer { width: 100%; height: 100%; } </style>
读到这里,这篇“vue中怎么安装使用cesium”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。