当前位置: 首页 > news >正文

做网站建设要学多久/福州百度seo排名软件

做网站建设要学多久,福州百度seo排名软件,南京疫情最新通知,室内平面图在线制作网站Vue3.x 项目中如何使用Cesium构建三维地图项目 本文列举两种常用使用方法: 1、使用vue-cli-plugin-cesium 插件安装cesium(配置较为简单) 2、安装cesium 手动配置webpack 一、使用vue-cli-plugin-cesium 插件安装cesium 使用vuecli创建vu…

Vue3.x 项目中如何使用Cesium构建三维地图项目

本文列举两种常用使用方法:

1、使用vue-cli-plugin-cesium 插件安装cesium(配置较为简单)

2、安装cesium 手动配置webpack

一、使用vue-cli-plugin-cesium 插件安装cesium

使用vuecli创建vue3.x的项目,因为插件基于webpack的,当前插件只支持 VueCLI3.0+ 版本哦

1. 创建项目

vue create vue3-cesium

2. 安装 vue-cli-plugin-cesium

vue add vue-cli-plugin-cesium// 非全局安装的vue-cli可以
npx vue add vue-cli-plugin-cesium

或npm安装

// 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

安装过程会有询问:

在 vue invoke 或 vue add 的过程中会有三个询问

询问一

Please choose a version of 'cesium' from this list

请在列表中选择 cesium 的版本

在此选择想使用的 Cesium 版本

询问二

Whether to import styles globally. 

This operation will automatically import widgets.css in main.js

是否全局引入样式,该操作将自动在main.js引入widgets.css?

此项默认为 yes,该操作将自动在 main.js 引入 widgets.css,即全局引入 Cesium 的 css 样式

如果此项设置为 no,那么开发时我们要手动引入widgets.css样式文件,引入命令如下

import "cesium/Widgets/widgets.css"询问三
Whether to add sample components to the project components directory
是否添加示例组件到项目components目录?

此选项默认为 yes,该操作会自动在 src/components 文件夹下生成 CesiumExample 文件夹,此文件夹中包含一些 Cesium 的使用示例供参考

如果此项设置为 no,则不生成示例文件

 如果安装完成启动项目时报错 

Error:Cesium is no-undef

请检查配置一下eslint  "no-undef": 0,

module.exports = {root: true,env: {node: true},'extends': ['plugin:vue/vue3-essential','eslint:recommended'],parserOptions: {parser: 'babel-eslint'},rules: {'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off','no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',"no-undef": 0,'prefer-const': 'off',"no-irregular-whitespace": "off", //这禁止掉 空格报错检查'no-unused-vars': 'off', //禁止定义变量未使用报错"no-empty": 0}
}

安装完成后的main.js

import {createApp
} from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'cesium/Widgets/widgets.css'Cesium.Ion.defaultAccessToken = '在cesium官网申请的token'createApp(App).use(store).use(router).mount('#app')

Cesium.Ion.defaultAccessToken 用户配置我们自己的cesium token的,下面详细说

在vue组件中使用:

<template><div class="map-box"><div id="cesiumContainer"></div></div>
</template><script>
import { onMounted } from "vue";export default {name: "",mounted() {// var viewer = new Cesium.CesiumWidget('cesiumContainer')// var viewer = new Cesium.Viewer("cesiumContainer", {//   animation: false, //是否显示动画控件//   homeButton: true, //是否显示home键//   geocoder: false, //是否显示地名查找控件        如果设置为true,则无法查询//   baseLayerPicker: false, //是否显示图层选择控件//   timeline: false, //是否显示时间线控件//   fullscreenButton: true, //是否全屏显示//   scene3DOnly: false, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源//   infoBox: false, //是否显示点击要素之后显示的信息//   sceneModePicker: false, //是否显示投影方式控件  三维/二维//   navigationInstructionsInitiallyVisible: true,//   navigationHelpButton: false, //是否显示帮助信息控件//   selectionIndicator: false, //是否显示指示器组件//   // 地形//   terrainProvider:new Cesium.createWorldTerrain({//     requestVertexNormals:true,//     requestWaterMask:true//   }),//   //1 加载天地图//   imageryProvider: new Cesium.WebMapTileServiceImageryProvider({//     url://       "http://t0.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=你的天地图申请的key",//     layer: "tdtBasicLayer",//     style: "default",//     format: "image/jpeg",//     tileMatrixSetID: "GoogleMapsCompatible",//     show: false,//     mininumLevel: 0,//     maximumLevel: 16//   })// });// console.log(viewer)},setup() {onMounted(() => {Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(80, 22, 130, 55)// 默认定位到中国上空,home定位到中国范围var viewer = new Cesium.Viewer("cesiumContainer", {animation: false, //是否显示动画控件homeButton: true, //是否显示home键geocoder: false, //是否显示地名查找控件        如果设置为true,则无法查询baseLayerPicker: false, //是否显示图层选择控件timeline: false, //是否显示时间线控件fullscreenButton: true, //是否全屏显示scene3DOnly: false, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源infoBox: false, //是否显示点击要素之后显示的信息sceneModePicker: true, //是否显示投影方式控件  三维/二维navigationInstructionsInitiallyVisible: true,navigationHelpButton: false, //是否显示帮助信息控件selectionIndicator: false, //是否显示指示器组件// 地形terrainProvider: new Cesium.createWorldTerrain({requestVertexNormals: true,requestWaterMask: true}),//1 加载天地图imageryProvider: new Cesium.WebMapTileServiceImageryProvider({url:"http://t0.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=你的天地图申请的key",layer: "tdtBasicLayer",style: "default",format: "image/jpeg",tileMatrixSetID: "GoogleMapsCompatible",show: false,mininumLevel: 0,maximumLevel: 16})});//调用影响中文注记服务viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({url: "http://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0" +"&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +"&style=default&format=tiles&tk=你的天地图申请的key",layer: "tdtImg_c",style: "default",format: "tiles",tileMatrixSetID: "c",subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],tilingScheme: new Cesium.GeographicTilingScheme(),tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],maximumLevel: 50,show: false}));// 隐藏版权viewer._cesiumWidget._creditContainer.style.display = "none";// 修改home按钮功能viewer.homeButton.viewModel.command.beforeExecute.addEventListener((e) => {console.log("click", e)e.cancel = true// // 方案一:你要飞的位置,根据点来设定// viewer.camera.flyTo({// 	destination: Cartesian3.fromDegrees(117.16, 32.71, 15000.0)// })// 返回初始设置位置// viewer.camera.flyHome(1)// 方案二:你要飞的位置,根据相机的视角来确定viewer.camera.flyTo({destination: Cesium.Rectangle.fromDegrees(80, 22, 130, 55)// home定位到中国范围})setTimeout(() => {let currentViewRect = viewer.camera.computeViewRectangle(),params = []params[2] = Cesium.Math.toDegrees(currentViewRect.east);params[3] = Cesium.Math.toDegrees(currentViewRect.north);params[0] = Cesium.Math.toDegrees(currentViewRect.west);params[1] = Cesium.Math.toDegrees(currentViewRect.south);console.log("当前视角", params)}, 3000)})console.log("view", viewer)})}
};
</script> 
<style scoped>
.map-box {width: 100%;height: 100%;
}#cesiumContainer {width: 100%;height: 100%;
}
</style>

运行效果:

上面我们可以看到运行时候回报出 我们当前使用的是默认的token,需要我们去cesium官网申请一个token,以便后期官方更新内容我们可以使用等,在main.js中设置一下

Cesium.Ion.defaultAccessToken = "你申请的token"  配置后就不会有提示了。

当项目运行出地球说明配置成功了,就可以进行开发了。

资料:vue-cli-plugin-cesium

 

 二、安装cesium 手动配置webpack

1、创建vue-cli项目 

2、在创建完成的项目中安装cesium

npm i cesium --save

3、安装插件 copy-webpack-plugin 版本5.0.1

npm i copy-webpack-plugin@5.0.1 -D

4、创建vue.config.js文件,配置webpack

const CopyWebpackPlugin = require("copy-webpack-plugin");
const webpack = require("webpack");
const path = require("path");let cesiumSource = "./node_modules/cesium/Source";
let cesiumWorkers = "Workers";
module.exports = {configureWebpack: {resolve: {alias: {"@": path.resolve("src"),},},amd: {// Cesium源码模块化使用的requireJs// 此配置允许webpack友好地在铯中使用require,使webpack打包cesium// 告诉Cesium, AMD的webpack版本用来评估要求的声明是不符合标准的toUrl功能toUrlUndefined: true},module: {// 解决require引入警告unknownContextCritical: false},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("./"),}),// 使Cesium对象实例可在每个js中使用而无须importnew webpack.ProvidePlugin({Cesium: ["cesium/Source/Cesium"]})],module: {unknownContextCritical: false,unknownContextRegExp: /\/cesium\/cesium\/Source\/Core\/buildModuleUrl\.js/,},},
};

注意:

(1)配置ProvidePlugin   

通过new webpack.ProvidePlugin  自动加载模块,而不必到处 import 或 require 

   // 使Cesium对象实例可在每个js中使用而无须importnew webpack.ProvidePlugin({Cesium: ["cesium/Source/Cesium"]})

 使用:无需导出引入,直接使用

<script>
import { onMounted } from "@vue/runtime-core";
export default{setup() {onMounted(() => {let viewer = new Cesium.Viewer("cesiumContainer");});return {};},
};
</script>

(2)不配置ProvidePlugin 

如果不配置ProvidePlugin,使用cesium变量需要手动配置引入:如下

main.js 引入,使用provide/inject 或 config.globalProperties (自行百度如何使用)

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// import 'cesium/Source/Widgets/widgets.css';
// const Cesium = require("cesium/Source/Cesium");import * as Cesium from 'cesium/Source/Cesium';
import 'cesium/Source/Widgets/widgets.css'const Vue = createApp(App)
Vue.provide('Cesium',Cesium)Vue.use(store).use(router).mount('#app')

使用:

<template><div id="cesiumContainer"></div>
</template>使用一:setup() 中使用<script>
import { defineComponent, inject, onMounted } from "@vue/runtime-core";
export default{setup() {let Cesium = inject("Cesium");onMounted(() => {let viewer = new Cesium.Viewer("cesiumContainer");});return {};},
};
</script>使用二:选项式使用<script>
export default {inject: ['Cesium'],mounted() {const Cesium = this.Cesiumlet viewer = new Cesium.Viewer("cesiumContainer");},methods: {loadMap() {let viewer = new this.Cesium.Viewer("aboutCesium");}}
}</script>

运行项目就可以看到效果:

 

http://www.lbrq.cn/news/754075.html

相关文章:

  • 网站开发续签/刚刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 网站开发组/石家庄网站建设培训
  • 网站内容/网络推广渠道和方法
  • 单产品网站建设/互联网营销方案
  • 咸宁网站建设/网络推广运营优化
  • 免费建网站的网站/广东河源最新疫情
  • 手机怎么做淘客网站/seo常用优化技巧
  • 网站建设学校培训/网页优化包括什么
  • 北京企业建站团队/微信小程序开发零基础入门
  • 苏州网站开发培训/百度搜索推广怎么做
  • 网站建设wordpress/宁波seo网络推广定制多少钱
  • 做违法网站程序员犯法吗/昆明百度推广开户费用
  • 做搞笑视频网站靠神魔赚钱/海外网站推广优化专员
  • 房产网站建设的目的/微信营销推广
  • 中山网站建设推荐/怎么网上推广自己的产品
  • 网站架构的重要性/销售网站有哪些
  • 网站开发部组织架构/茶叶seo网站推广与优化方案
  • 旅游网站模板免费下载/2021年网络热点舆论
  • 外网IP访问wordpress/seo关键词排名优化销售
  • 大型网站制作平台/网络广告策划与制作
  • 湖北seo排名诊断/seo站长工具平台
  • 网站有了订单邮箱提醒代码/百度竞价推广开户
  • 网站做收藏任务有用吗/域名注册优惠
  • 我的家乡网页制作步骤/站长工具seo综合查询分析
  • 泰州网站建设服务热线/在线培训平台有哪些
  • 找人做网站属于诈骗吗/杭州网络推广公司
  • 贵阳市建设厅网站/seo基础知识包括什么
  • 网站建设与维护大学生总结/制作链接的app的软件
  • 还有河北城乡和住房建设厅网站吗/seo搜索引擎优化师
  • 教育培训网站抄袭/网络营销电子版教材
  • 基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
  • Java 中使用阿里云日志服务(SLS)完整指南
  • python的美食交流社区系统
  • RxJava Android 创建操作符实战:从数据源到Observable
  • 【科研绘图系列】R语言绘制蝶形条形图蝶形柱状堆积图
  • 【22-决策树】