vue+cesium实现地球自转效果

介绍:


        项目需要展示地球自转并能在特定节点停止。本文深入探讨了如何利用Vue和Cesium实现地球自转效果。

一、实现效果

二、核心代码

/*
 * @Description: 地球自转效果
 * @Version: 1.1
 * @Author: i24499
 * @Date: 2024-08-24 15:37:25
 * @LastEditors: i24499
 * @LastEditTime: 2024-10-09 10:15:13
 */

/**
* 地球自转
*/
earthRotation() {
  // 注意Viewer的初始化配置一定要将shouldAnimate设置为true,否则无效
  const viewer = new Cesium.Viewer("cesiumContainer", {
    shouldAnimate: true, //控制模型动画
  });
  viewer.camera.setView({
    destination: Cesium.Cartesian3.fromDegrees(0, 0, 18000000), // 调整相机高度
    orientation: {
      heading: Cesium.Math.toRadians(0.0), // 方向
      pitch: Cesium.Math.toRadians(-90.0), // 俯仰角度
      roll: 0 // 翻转角度
    }
  })
  let previousTime = Cesium.JulianDate.clone(viewer.clock.currentTime) // 上一个时刻的时间

  // 调整速度的因子
  let speedFactor = 30 // 调整这个值来改变自转速度(越小旋转速度越快)

  /*
    通过调整时钟倍速也可以调整自转速度
    viewer.clock.multiplier = 2.0 // 将倍速设置为2,地球自转速度加快一倍
    viewer.clock.multiplier = 0.5 // 将倍速设置为0.5,地球自转速度减慢一半
    */

  this.onTickCallback = () => {
    let currentTime = viewer.clock.currentTime // 获取当前时间
    // 计算时间间隔
    let delta = Cesium.JulianDate.secondsDifference(currentTime, previousTime) / speedFactor
    // 更新上一个时刻的时间为当前时间
    previousTime = Cesium.JulianDate.clone(currentTime)
    // 实现地球自转效果,绕Z轴旋转,正负可控制自转方向(+ 逆时针,- 顺时针)
    viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -1 * delta)
  }
  // 开启地图自转效果
  viewer.clock.onTick.addEventListener(this.onTickCallback)
}

三、取消自转

viewer.clock.onTick.removeEventListener(this.onTickCallback)

要在Vue实现Cesium的VR功能,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Vue.jsCesium。你可以使用npm或yarn来安装它们: ```shell # 安装Vue CLI npm install -g @vue/cli # 创建一个新的Vue项目 vue create cesium-vr-app # 进入项目目录 cd cesium-vr-app # 安装Cesium依赖 npm install cesium ``` 2. 现在,在你的Vue项目中,你可以创建一个CesiumVR组件。在src/components目录下创建一个新的文件CesiumVR.vue,然后在其中编写你的CesiumVR代码: ```vue <template> <div id="cesiumContainer" style="width: 100%; height: 100%;"></div> </template> <script> import * as Cesium from 'cesium/Cesium'; export default { mounted() { this.viewer = new Cesium.Viewer('cesiumContainer', { vrButton: true, // 启用VR按钮 vrButtonOptions: { // VR按钮配置选项 defaultVRButton: true, vrButtonElement: document.getElementById('vrButton') } }); }, beforeDestroy() { if (this.viewer && !this.viewer.isDestroyed()) { this.viewer.destroy(); } } }; </script> <style scoped> #cesiumContainer { position: absolute; top: 0; left: 0; } #vrButton { position: fixed; top: 10px; right: 10px; } </style> ``` 3. 接下来,在你的根组件(App.vue)中使用CesiumVR组件。在App.vue中,引入CesiumVR组件并将其添加到模板中: ```vue <template> <div id="app"> <cesium-vr></cesium-vr> </div> </template> <script> import CesiumVR from './components/CesiumVR.vue'; export default { components: { CesiumVR } }; </script> <style> #app { height: 100vh; } </style> ``` 4. 最后,在你的项目中运行以下命令以启动开发服务器: ```shell npm run serve ``` 现在,你应该能够在浏览器中看到一个具有VR功能的Cesium场景。用户可以通过单击VR按钮将应用程序切换到虚拟现实模式,然后使用适当的设备(如头戴式显示器)来浏览和与地球进行交互。请注意,为了在浏览器中使用VR功能,需要先确保你的设备和浏览器支持WebVR或WebXR技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值