Cesium设置时间类

2023-11-11

// 场景时钟类
export default class SceneClock {
  viewer;
  multiplier;

  constructor(viewer) {
    this.viewer = viewer;
  }

  /**
   * 设置场景时钟
   * @param start 开始时间
   * @param stop 结束时间
   * @param multiplier 场景时间倍速,默认是 1 倍速
   */
  setSceneClock(start, stop, multiplier = 32) {
    const startTime = Cesium.JulianDate.fromDate(start);
    const stopTime = Cesium.JulianDate.fromDate(stop);

    this.viewer.clock.startTime = startTime.clone();
    this.viewer.clock.stopTime = stopTime.clone();
    this.viewer.clock.currentTime = startTime.clone();
    this.viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP;
    this.viewer.clock.multiplier = multiplier;
    this.viewer.timeline.zoomTo(startTime.clone(), stopTime.clone())
    this.multiplier = multiplier;
  }

  /**
   * 快进时间
   * @param seconds 快进多少秒,默认30秒
   */
  stepUp(seconds = 30) {
    if (seconds <= 0) {
      return;
    }

    const currentTime = Cesium.JulianDate.addSeconds(
      this.viewer.clock.currentTime,
      seconds,
      new Cesium.JulianDate()
    );

    this.viewer.clock.currentTime = currentTime;
  }

  /**
   * 后退时间
   * @param seconds 后退多少秒,默认-30秒
   */
  stepBack(seconds = -30) {
    if (seconds >= 0) {
      return;
    }

    const currentTime = Cesium.JulianDate.addSeconds(
      this.viewer.clock.currentTime,
      seconds,
      new Cesium.JulianDate()
    );

    this.viewer.clock.currentTime = currentTime;
  }

  /**
   * 场景时间加速
   * @param multiplier 
   * @returns 当前场景倍速
   */
  accelerateClock(multiplier = 2) {
    this.viewer.clockViewModel.multiplier *= multiplier;
    return this.viewer.clockViewModel.multiplier
  }

  /**
   * 场景时间减速
   * @param multiplier 
   * @returns 当前场景倍速
   */
  decelerateClock(multiplier = 2) {
    this.viewer.clockViewModel.multiplier /= multiplier;
    return this.viewer.clockViewModel.multiplier
  }

  /**
   * 是否开启场景动画
   * @param state 
   */
  shouldAnimate(state) {
    this.viewer.clock.shouldAnimate = state;
  }

  // 重置场景时钟
  reset() {
    this.viewer.clock.shouldAnimate = false;
    this.viewer.clock.multiplier = this.multiplier;
    this.viewer.clock.currentTime = this.viewer.clock.startTime;
  }

  // 设置当前时间
  setCurrentTime(time) {
    this.viewer.clock.currentTime = Cesium.JulianDate.fromDate(time);
  }
  /**
   * 获取当前场景时间
   * @param callback 回调函数接收当前场景时间
   */
  getCurrentScenarioTime(callback) {
    this.viewer.scene.preUpdate.addEventListener((s, time) => {
      callback(Cesium.JulianDate.toDate(time));
    })
  }
  // 设置当前速率
  setMultiplier(multiplier = 1) {
    this.viewer.clock.multiplier = multiplier;
  }

  /**
   * 获取场景的开始与结束时间
   * @returns 场景的开始与结束时间
   */
  getSceneTime() {
    const startTime = new Date(Cesium.JulianDate.toDate(this.viewer.clock.startTime)),
      stopTime = new Date(Cesium.JulianDate.toDate(this.viewer.clock.stopTime));

    //  转换为UTC时间,28800000(8小时)
    const startTimeUTC = new Date(startTime.getTime() - 28800000).format('yyyy-MM-dd hh:mm:ss'),
      endTimeUTC = new Date(stopTime.getTime() - 28800000).format('yyyy-MM-dd hh:mm:ss');

    return {
      startTimeUTC,
      endTimeUTC
    };
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cesium设置时间类 的相关文章

  • replaceAll用法 (vue搜索框过滤数据高亮显示)

    举例 vue搜索框过滤数据高亮显示 在计算属性里面写一个方法 先用filter过滤item 然后用indexof方法查找是否包含 item name index0f this txt gt 1 indexof gt 1表示包含 this t
  • React + antd实现嵌套可增减表单

    技术栈 React antd 接到需求 做一个form嵌套表单 刚开始想自己做一个 后来想着参数处理可能比较麻烦就直接用antd的Form吧 一 目标效果 先看一下效果图 其中点击新增标签及配置时可以加一个红色框里的内容 点击蓝框里的加号可
  • vue——路由之路由跳转、路由传参、路由嵌套、路由模式

    相关认识 后端路由 对于前端的网络请求 不同的pathname 去执行后端的不同业务 前端路由 不同的网址对应各自的页面 vue的前端路由 SPA应用要做出路由效果 就得判断当前网址 然后切换组件 vue router就是专门做切换组件的功
  • 如何调试VUE代码(VUE调试利器 vue devtools)

    前言 最新想开发一个前后端分离的项目 一直想开始的 拖延了好久终于决定要对它下手了 最早的时候开发的时候使用的还是JSP 那个时候使用的还是EL表达式 后来切换到Spring和SpringMVC之后采用的是HTML JS的all in on
  • vue3中使用百度地图BMAP

    在Vue3中使用百度地图 可以按照以下步骤进行 1 在项目中引入百度地图的API文件 可以在public index html文件中添加以下代码 其中 密钥可以在百度地图开放平台申请 2 在需要使用地图的组件中引入BMap对象和BMapGL
  • 在react中使用接口请求的方式

    在 React 中使用接口 数据交互的关键 React 是一个流行的 JavaScript 前端框架 用于构建交互式的用户界面 在实际开发中 我们经常需要与后端服务器进行数据交互 这就需要使用接口来获取和发送数据 本文将介绍在 React
  • angular入门

    架构模式 MVC gt MVP gt MVVM angular cli angular cli angular脚手架 一键构建angular项目 常用指令 ng help 查看所有指令 ng new projectName 创建angula
  • 【react】state的总结

    state是组件对象最重要的属性 值是对象 组件被称为 状态机 通过更新组件的state来更新对应的页面显示 重新渲染组件 组件中render方法中的this指向组件的实例对象 组件自定义的方法中的this指向undefined 如何解决
  • Vue前端框架

    一 简介 Vue是一个渐进式 真正用到才引用 的JavaScript框架与其它大型框架不同的是 Vue 被设计为可以自底向上逐层应用 Vue 的核心库只关注视图层 不仅易于上手 还便于与第三方库或既有项目整合 另一方面 与现代化的工具以及各
  • 如何在Vue项目中给路由跳转加上进度条

    在平常浏览网页时 我们会注意到在有的网站中 当点击页面中的链接进行路由跳转时 页面顶部会有一个进度条 用来标示页面跳转的进度 如下图所示 虽然实际用处不大 但是对用户来说 有个进度条会大大减轻用户的等待压力 提升用户体验 本篇文章就来教你如
  • 提高 React 项目整洁度的 21 个最佳实践

    React 在如何组织结构方面非常开放 这正是为什么我们有责任保持项目的整洁和可维护性 今天 我们将讨论一些改善 React 应用程序健康状况的最佳实践 这些规则被广泛接受 因此 掌握这些知识至关重要 所有内容都将以代码展示 所以做好准备
  • 【Unity】UI的MVP框架理解,浅谈框架

    Unity UI的MVP框架理解 浅谈框架 引入框架 简单谈谈MVP框架 框架结构 框架流程 最后的碎碎念 引入框架 什么是框架 很多课程都会提到所谓的框架 进入实习前 总觉得那是很大的 可能需要有某些组件或者其他不一样的东西来作为基础进行
  • 手把手帮助你通过Vue+Springboot+MybatisPlus实现一个简单的登录注册页面,0基础

    创建前端vue项目 首先通过脚手架创建vue文件夹 前提 安装好node js软件 安装好后 通过node V 查看版本号 npm V查看npm版本 通过命令安装脚手架 npm install g vue cli g代表全局安装 s代表本地
  • 如何排查 Electron V8 引发的内存 OOM 问题

    经过长达大半年时间的崩溃治理后 基于 Electron 框架开发的新版 PC 淘宝直播推流客户端的稳定性终于赶超基于QT 框架开发的旧版本了 剩下的崩溃问题中有 40 是跟内存 OOM 有关 其中 V8FatalErrorCallback
  • 小游戏开发:使用 React 和 Redux Tool Kit 实现俄罗斯方块

    大家好 我是若川 我持续组织了近一年的源码共读活动 感兴趣的可以 点此扫码加我微信 lxchuan12 参与 每周大家一起学习200行左右的源码 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列 包含20余篇源码文章 历史面试系列 另
  • layui会议OA项目数据表格新增改查

    文章目录 前言 一 后台代码编写 1 1 数据表优化 1 2 R工具类 1 3 UserDao新增改查 1 4 Servlet的编写 二 前台页面的编写 2 1 userManege jsp 2 2 userManage js 2 3 新增
  • PhpStorm为什么值得推荐?

    智能编码辅助 PhpStorm 是一个 PHP IDE 它实际上 获取 您的代码 它支持 PHP 5 3 5 4 5 5 5 6 7 0 7 1 7 2 提供动态错误预防 最佳自动完成和代码重构 零配置调试以及扩展的 HTML CSS 和J
  • iOS自动布局——Masonry详解

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由鹅厂新鲜事儿发表于云 社区专栏 作者 oceanlong 腾讯 移动客户端开发工程师 前言 UI布局是整个前端体系里不可或缺的一环 代码的布局是设计语言与用户视觉感受沟通的桥梁
  • 【Python】Python中逗号转为空格的方法

    Python中将逗号转换为空格的几种方法 以及将其应用在实际开发中的示例 Python是一种功能强大的编程语言 其提供了很多内置函数 方便我们快速 高效地处理数据 一 使用replace函数 Python中的字符串函数replace可以用来
  • 【Python】Python中逗号转为空格的方法

    Python中将逗号转换为空格的几种方法 以及将其应用在实际开发中的示例 Python是一种功能强大的编程语言 其提供了很多内置函数 方便我们快速 高效地处理数据 一 使用replace函数 Python中的字符串函数replace可以用来

随机推荐

  • Schedulis 普通版环境部署

    Schedulis 普通版环境部署 一 使用前置 请基于 Linux 操作系统操作 建议 CentOS 创建新用户 hadoop 并为该用户赋予 root 权限 用于部署schedulis 准备好 MySQL 版本5 5 的客户端和服务端
  • String s = new String("abc");产生了几个对象?

    对于这个问题 老套路先上代码 public class StringTest public static void main String args String s1 Hello String s2 Hello String s3 new
  • ZooKeeper在Spark的使用

    摘抄一段 ZooKeeper 官网的一句话 大意就是 ZooKeeper 为分布式应用提供了高效可靠的分布式协调服务 提供了统一命名服务 配置管理和分布式锁等分布式的基础服务 ZooKeeper is a centralized servi
  • 数据结构实验6:二叉树的遍历,深度计算,度为1的个数

    题目 1 实现二叉树前序 中序 后序遍历的递归算法 2 计算二叉树的深度 递归和非递归算法 3 统计二叉树度为1的节点个数 递归和非递归算法
  • JS使用及mysql 查询语句

    目录 1 javascript的使用方式1 2 js的使用方式2 3 js中定义变量以及数据类型划分 4 Js之运算符 5 js之流程控制语句 6 js事件编程的三要素 7 javascript中如何定义函数以及调用函数 8 js中Date
  • 请问VARCHAR2(128)能存多少个汉字?

    Q 请问VARCHAR2 128 能存多少个汉字 A 看看什么字符集 或者看单个汉字几个字节lengthb Q 请问怎样查看你所提出的两个问题 A oracle中length 与lengthb 区别 SQL gt select length
  • 多个数计算最大公约数与最小公倍数的模板

    这是道计算两个数的最大公约数与最小公倍数的题目 辗转相除法实现计算最大公约数 多个数的最大公约数 计算多个数的最大公约数的算法思路 计算前两个数是最大公约数 记为gcd 再计算gcd与第三个数的最大公约数 更新gcd为本次计算的最大公约数
  • 如何检查 Docker 镜像是否存在漏洞

    Docker 可以将应用程序及其依赖项打包到一个虚拟容器中 该容器可以在任何 Linux Windows 或 macOS 计算机上运行 这使应用程序可以在各种位置运行 例如本地 公共 请参阅分散计算 分布式计算和云计算 或私有云 在 Lin
  • 正规式和正则表达式的异同

    正规式的定义及使用方法 转自正规式 设 是有穷字母表 并定义辅助字母表 都是 上的正规式 它们所表示的正规集为 任何a是一个正规式 若a 它所表示的正规集为 a 如果R1和R2是正规式 它们表示的正规集分别为L1和L2 则 R1 R2 R1
  • 滤波电容容值与所滤噪声频率的关系

    去耦电容的选择不存在与频率的精确对应关系 理论上越大越好 但现实中所有器件都不是理想器件 不论何种电容 ESL ESR都是必然存在的 于是实际电容的频响曲线明显呈非线性 仅在一定频率区间内基本符合纯电容的理论计算结果 超出一定界限后就与理论
  • Chaincode之间调用

    API InvokeChaincode 可以一个chaincode中调用另外一个chaincode中的函数 两个chaincode需要安装在相同的peer结点中 如果只需要查询被调链码的世界状态 可以在不同通道中进行 如果涉及更新操作 两个
  • QT中为生成的exe运行文件添加图标

    1 准备好ico图标文件名字为test ico 最好放在和 pro文件同一个文件夹中 2 创建一个叫icon rc的文件 里面写上文本信息IDI ICON1 ICON test ico 保存好 3 在pro文件中添加代码 RC FILE i
  • 09.Javascript设计模式之装饰器模式----Decorator

    09 Javascript设计模式之装饰器模式 Decorator 首先 我非常遗憾的要说一声 我花了两个小时整理的关于装饰器模式的笔记 因为一个不可预期的故障 ADoc文档上传到服务器后 文件损坏了 文件毫无备份 难道是我的笔记中包含法律
  • 数据结构--线性表详解(一)

    这里写链接内容1 前言 线性表是最常用且是最简单的一种数据结构 形如 A1 A2 A3 An这样含有有限的数据序列 我们就称之为线性表 2 线性表的两种表示形式 顺序表示 其实就是数组 链表表示 3 线性表一般操作的介绍 线性表一般包含如下
  • Swift语法学习--实用函数&关键词

    文章目录 abs min max swap filter map reduce Defer guard let 自定义运算符 abs min max swap filter map reduce Defer guard let 自定义运算符
  • 人脸识别系统具有哪些管理功能

    人脸识别系统是一个具有名单管理 资源管理 布控管理 任务管理的多功能系统 主要功能有 1 名单管理 对名单库及库内名单进行管理 支持用户新增 修改 删除名单库 也可以对库内名单进行新增 修改 删除等动作 2 资源管理 对布控点及布控点内的人
  • [学习flex] 1.利用flex实现文字和谐小程序

    灵感来自于09平台dota1 游戏选手对喷时经常互飙国粹 问候对方全家 后来09平台进行了聊天和谐 不和谐的文字都会被 替换 今天我就就用flex实现类似的效果 话不多说上flex代码 脏话 printf 国粹 printf printf
  • BF算法与KMP模式匹配算法(画图详解,C语言实现)

    KMP算法 1 BF算法 1 1BF算法定义 1 2BF算法举例 1 3BF算法代码实现 1 4BF算法性能分析 2 KMP算法 2 1KMP算法与BF算法的区别 2 2求KMP算法next数组 2 3KMP算法的过程举例 2 4KMP算法
  • attr 和 prop 的区别介绍

    attr 和 prop 的区别介绍 对于 HTML 元素本身就带有的固有属性 在处理时 使用 prop 方法 对于 HTML 元素我们自己自定义的 DOM 属性 在处理时 使用 attr 方法 实例 1 a href https www r
  • Cesium设置时间类

    场景时钟类 export default class SceneClock viewer multiplier constructor viewer this viewer viewer 设置场景时钟 param start 开始时间 pa