当前位置:   article > 正文

VUE-cesium(综合demo-01配置基础项)

vue-cesium

目录

1. 项目创建

2. 地图初始化配置

3. 设置鼠标位置动态经纬度小组件

4. 配置cesium罗盘小组件

4.1 安装 cesium-navigation-es6 插件

4.2 配置罗盘样式

5. 修改App.vue

6. 实现效果:


1. 项目创建

VUE3构建Cesium项目_HM-hhxx!的博客-CSDN博客_cesium vue3使用VUE3构建cesium项目https://blog.csdn.net/damadashen/article/details/124896474?spm=1001.2014.3001.5502

2. 地图初始化配置

在文件夹中通过创建initViewer对cesium项目进行基础配置,initViewer.js如下:

  1. import * as Cesium from "cesium";
  2. export default function initViewer() {
  3. // 设置cesium token
  4. Cesium.Ion.defaultAccessToken =
  5. "-----------YourToken-----------------------";
  6. // 设置cesium静态资源路径
  7. window.CESIUM_BASE_URL = "/";
  8. // 设置cesium默认视角
  9. Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
  10. // 西边的经度
  11. 89.5,
  12. // 南边维度
  13. 20.4,
  14. // 东边经度
  15. 110.4,
  16. // 北边维度
  17. 61.2
  18. );
  19. var viewer = new Cesium.Viewer("cesiumContainer", {
  20. // 是否显示信息窗口
  21. // infoBox: false,
  22. // 是否显示查询按钮
  23. geocoder: false,
  24. // 不显示home按钮
  25. homeButton: false,
  26. // 控制查看器的显示模式
  27. sceneModePicker: false,
  28. // 是否显示图层选择
  29. baseLayerPicker: false,
  30. // 是否显示帮助按钮
  31. navigationHelpButton: false,
  32. // 是否播放动画
  33. animation: false,
  34. // 是否显示时间轴
  35. timeline: false,
  36. // 是否显示全屏按钮
  37. fullscreenButton: false,
  38. shouldAnimate: true,
  39. });
  40. // 设置沙箱允许使用js
  41. var iframe = document.getElementsByClassName("cesium-infoBox-iframe")[0];
  42. iframe.setAttribute(
  43. "sandbox",
  44. "allow-same-origin allow-scripts allow-popups allow-forms"
  45. );
  46. iframe.setAttribute("src", "");
  47. // 隐藏logo
  48. viewer.cesiumWidget.creditContainer.style.display = "none";
  49. viewer.scene.globe.enableLighting = true;
  50. // 取消天空盒显示
  51. viewer.scene.skyBox.show = false;
  52. // 设置背景为黑色
  53. viewer.scene.backgroundColor = Cesium.Color.BLACK;
  54. // 设置抗锯齿
  55. viewer.scene.postProcessStages.fxaa.enabled = true;
  56. // 设置相机飞机地点(广州塔)
  57. var postion = Cesium.Cartesian3.fromDegrees(
  58. // 经度
  59. 113.3301,
  60. // 纬度
  61. 23.0991,
  62. // 高度
  63. 1500
  64. );
  65. viewer.camera.flyTo({
  66. destination: postion,
  67. orientation: {
  68. heading: Cesium.Math.toRadians(-45),
  69. pitch: Cesium.Math.toRadians(-30),
  70. roll: 0,
  71. },
  72. duration: 2,
  73. });
  74. return viewer;
  75. }

3. 设置鼠标位置动态经纬度小组件

配置MousePosition.js如下:

  1. import * as Cesium from "cesium";
  2. export default class MousePosition {
  3. constructor(viewer) {
  4. this.divDom = document.createElement("div");
  5. this.divDom.style.cssText = `
  6. position: fixed;
  7. bottom:0;
  8. right:0;
  9. width:200px;
  10. height:40px;
  11. background-color: rgba(0,0,0,0.5);
  12. color: #fff;
  13. font-size: 14px;
  14. line-height: 40px;
  15. text-align: center;
  16. z-index: 100;
  17. `;
  18. document.body.appendChild(this.divDom);
  19. // 监听鼠标的移动事件
  20. const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
  21. handler.setInputAction((movement) => {
  22. // 获取鼠标的坐标
  23. const cartesian = viewer.camera.pickEllipsoid(
  24. movement.endPosition,
  25. viewer.scene.globe.ellipsoid
  26. );
  27. if (cartesian) {
  28. // 转换成经纬度
  29. const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
  30. const longitudeString = Cesium.Math.toDegrees(
  31. cartographic.longitude
  32. ).toFixed(2);
  33. const latitudeString = Cesium.Math.toDegrees(
  34. cartographic.latitude
  35. ).toFixed(2);
  36. const heightString = cartographic.height;
  37. // 显示经纬度
  38. // console.log(
  39. // `经度:${longitudeString} 纬度:${latitudeString} 高度:${heightString}`
  40. // );
  41. this.divDom.innerHTML = `经度:${longitudeString} 纬度:${latitudeString} `;
  42. }
  43. }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
  44. }
  45. }

4.配置cesium罗盘小组件

4.1 安装 cesium-navigation-es6 插件

cesium-navigation是一个cesium的插件,提供指南针、导航仪和距离刻度用户图形界面。插件的github地址是

GitHub - cesium-plugin/cesium-navigation-es6icon-default.png?t=M5H6https://github.com/cesium-plugin/cesium-navigation-es6#readme使用npm进行安装

npm install cesium-navigation-es6 --save

或使用yarn方式安装:

yarn add cesium-navigation-es6 -D

4.2 配置罗盘样式

罗盘初始化时,通过new CesiumNavigation(viewer, options);进行实例化,viewer为创建的初始化图层,options为罗盘的配置项。对于罗盘的样式重写,详见:

css请参考/githubicon-default.png?t=M5H6https://github.com/richard1015/cesium-navigation-es6/blob/master/test/test.css

less请参考/githubicon-default.png?t=M5H6https://github.com/richard1015/cesium-navigation-es6/blob/master/test/test.less

js请参考/githubicon-default.png?t=M5H6https://github.com/richard1015/cesium-navigation-es6/blob/master/test/index.js

罗盘样式及内容可以根据用户需求自行更改,详见github地址中的介绍。 

官方案例:

  1. import { Viewer,Rectangle} from "cesium";
  2. import 'cesium/Build/Cesium/Widgets/widgets.css';
  3. const viewer = new Viewer("cesiumContainer",{
  4. animation:false,
  5. timeline:false
  6. });
  7. const options = {};
  8. // 用于在使用重置导航重置地图视图时设置默认视图控制。接受的值是Cesium.Cartographic 和 Cesium.Rectangle.
  9. // options.defaultResetView = Rectangle.fromDegrees(80, 22, 130, 50)
  10. options.defaultResetView = new Cartographic(CesiumMath.toRadians(111.50623801848565), CesiumMath.toRadians(2.8997206760441205), 8213979.400955964)
  11. //相机方向
  12. options.orientation = {
  13. heading: CesiumMath.toRadians(350.94452087411315),
  14. pitch: CesiumMath.toRadians(-66.6402342251215),
  15. roll: CesiumMath.toRadians(360)
  16. }
  17. //相机延时
  18. options.duration = 4//默认为3s
  19. // 用于启用或禁用罗盘。true是启用罗盘,false是禁用罗盘。默认值为true。如果将选项设置为false,则罗盘将不会添加到地图中。
  20. options.enableCompass= true;
  21. // 用于启用或禁用缩放控件。true是启用,false是禁用。默认值为true。如果将选项设置为false,则缩放控件将不会添加到地图中。
  22. options.enableZoomControls= true;
  23. // 用于启用或禁用距离图例。true是启用,false是禁用。默认值为true。如果将选项设置为false,距离图例将不会添加到地图中。
  24. options.enableDistanceLegend= true;
  25. // 用于启用或禁用指南针外环。true是启用,false是禁用。默认值为true。如果将选项设置为false,则该环将可见但无效。
  26. options.enableCompassOuterRing= true;
  27. //修改重置视图的tooltip
  28. options.resetTooltip = "重置视图";
  29. //修改放大按钮的tooltip
  30. options.zoomInTooltip = "放大";
  31. //修改缩小按钮的tooltip
  32. options.zoomOutTooltip = "缩小";
  33. //如需自定义罗盘控件,请看下面的自定义罗盘控件
  34. new CesiumNavigation(viewer, options);

5. 修改App.vue

 App.vue如下:

  1. <template>
  2. <div id="cesiumContainer" ref="cesiumContainer"></div>
  3. </template>
  4. <script setup>
  5. // yarn add cesium
  6. // 将cesium目录下的Build/Cesium4个目录拷贝到public,然后将widgets目录拷贝一份到src下
  7. import * as Cesium from "cesium";
  8. import "./Widgets/widgets.css";
  9. import { onMounted } from "vue";
  10. import initViewer from "@/cesium/initViewer";
  11. import MousePosition from "@/cesium/MousePosition";
  12. import CesiumNavigaion from "cesium-navigation-es6";
  13. onMounted(() => {
  14. let viewer = initViewer();
  15. // 根据鼠标位置生成经纬度值
  16. let mousePosition = new MousePosition(viewer);
  17. // 设置导航罗盘的配置
  18. var options = {
  19. // 启用罗盘
  20. enableCompass: true,
  21. // 是否启用缩放
  22. enableZoomControls: false,
  23. // 是否启用指南针外环
  24. enableCompassOuterRing: true,
  25. // 是否启用距离的图例
  26. // enableDistanceLegend: false,
  27. };
  28. // 初始化导航罗盘
  29. let navigation = new CesiumNavigaion(viewer, options);
  30. });
  31. </script>
  32. <style>
  33. * {
  34. margin: 0;
  35. padding: 0;
  36. }
  37. #cesiumContainer {
  38. width: 100vw;
  39. height: 100vh;
  40. }
  41. </style>

6. 实现效果:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/629740
推荐阅读
相关标签
  

闽ICP备14008679号