创建

跟Clock相关的主要有Animation控件和Timeline控件,通常两者会放在一起使用。

在Cesium中,Viewer默认开启这两个控件,如果你想要不显示控件,可以在Viewer初始化中设置其为false,代码如下:

但这种方式只能在初始化时设置,无法动态的切换显示状态,灵活度上稍显不足。如果你有这方面的需要,可以使用如下这种方式,同时Widget是自适应,也会动态调整布局。

基于Viewer来创建这两个控件并不复杂,但某些时候(尽管我想不出这样的场景),用户希望在自己的div上创建控件,也就是脱离和Viewer的关联,虽然非常麻烦,但Cesium还是支持了这种方式。

首先,需要加载对应的css文件,

并创建存放Animation的DIV

目前需要指定对应的id和class,并指定z-index属性,否则会被球体压盖。当然,也可以自己实现css,不过比较繁琐,而且你只能修改风格,Animation的形状是内部用SVG绘制的,并绑定了对应的事件,要想DIY,工作量更大。

然后,创建对应的clock和Animation控件,绑定id为animationContainer即可。

这样,我们就独立于Viewer创建了Animation控件。

这种属于高端用法,适合一些个性化的效果,你要关闭Viewer自带的Animation和Timeline,同时如果你需要和球体在时间上同步,需要引用cesiumWidget的clock而不是自己单独创建的,保证时钟同步。当然,Cesium也提供了一个lighter的css风格,可供切换,具体代码请参考Animation.html。

Clock

上一节主要涉及界面部分。但无论是Animation还是Timeline,都紧密的和Clock关联在一起。

首先,Viewer在初始化时,内部会创建一个Clock,所以建议用户使用viewer.cesiumWidget.clock而不是自己创建Clock,毕竟在一个应用内,时间通常都是标准的,创建多个Clock反而混淆了。

Clock中默认开始时间(startTime)为当前时间,终止时间(stopTime)为24小时后,并能获取当前时间(currentTime)。

另外可以设置ClockRange属性,用户可以根据自己的需要来设置,默认为: UNBOUNDED

CLAMPED

达到终止时间后停止

LOOP_STOP

达到终止时间后重新循环

UNBOUNDED

达到终止时间后继续读秒

JulianDate

Clock内部以儒略日(JulianDate)维护时间。其起始日期为公元前4713年1月1日中午12时,这和我们常用的格林威治时间略有不同,主要是天文学家使用。

JulianDate类提供了非常丰富的接口,时间的对比,运算,和格林威治时间的转换等,简单易用,完全满足各类需求。同时内部还可以采用国际原子时(TAI)的方式来记录。下面是Clock的一个简单用法:

最后要强调的是tick方法,Cesium内部每一帧都会调用该方法,实现时间状态的更新和检测。

涉及到时间的细节很多,比如TimeInterval,TimeConstants,后续如果有涉及,我们在详细介绍。

Animation

Animation默认显示的是格林威治时间,而多数情况下,我们希望能够显示当前系统时间,这就需要重写timeFormatter方法,代码如下,详见Animation2.html。

这样,内部继续以格林威治时间为标准,保证光照等效果的正确,同时在时间显示时,调整为系统所在时区时间显示。

Timeline

Timeline控件默认以当前时间为起点,长度是24小时,而如果Clock采用UNBOUNDED,则存在超出该时间轴的范围的可能,下面,我们设计让Timeline能够动态的根据时间的变化动态更新:

原理也很简单,每一帧检测当前时间是否在可视时间轴范围内,如果不是,则调用zoomTo更新时间轴的范围。

可见,只要熟练运用Clock的方法,我们可以很好的微调相关控件的细节,更好的满足不同的需求,源码面前了无秘密,这也是源码带给我们阅读的乐趣。

cesium 设置时间_Cesium应用篇:3控件(1)Clock相关推荐

  1. cesium 设置时间_Cesium 车辆跟踪事件气泡弹窗一直开启

    展示图: 功能思路: (1)设置创建时钟组件JulianDate,该时间组件很重要,不仅是用来追踪路线使用,还要监听每个时间点到达的坐标位置. (2)气泡的实时根据坐标刷新,上一篇有说到,根据当前时间 ...

  2. cesium 设置时间_Cesium之地形制作与合并

    前言 我相信使用过Cesium的小伙伴一定不会陌生CesiumLab,将DEM数据导入CesiumLab的地形切片模块工具,设置一下切片参数,喝杯咖啡,等待任务完成,然后发布服务,最后使用API调用服 ...

  3. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇-UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) 1 #import <Foundation/Foundation.h&g ...

  4. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇-UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  5. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇-UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  6. QT上设置背景图不影响子控件以及按钮控件的透明化

    QT中设置背景图不影响子控件 QT中设置背景图的方法不少,我这里是直接使用stylesheet来设置背景图.如果直接在UI界面进行如下所示设置 border-image: url(:/resource ...

  7. C#控件篇 - PictureBox控件设置滚动条

    要给PictureBox添加滚动条需要以下步骤: 1)将picturebox放在panel上: 2)将panel的AutoScroll设置为ture: 3)将picturebox的SizeMode设置 ...

  8. python gui插件_Python进阶量化交易专栏场外篇17- GUI控件在回测工具上的添加

    欢迎大家订阅<教你用 Python 进阶量化交易>专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下: 为了 ...

  9. 一起撸个朋友圈吧(step5) 控件篇【控件组装评论控件】

    项目地址:https://github.com/razerdp/FriendCircle 上篇链接:http://www.jianshu.com/p/a2cdf81359fc 下篇链接:http:// ...

最新文章

  1. JTable是Swing编程中很常用的控件
  2. 【Java 并发】详解 ThreadLocal
  3. Prolific PL2303SA 调试
  4. opencv打开相机实时采集与处理
  5. 15.4.1 杠杆利用类型参数推断
  6. 【网络编程】之八、异步选择WSAAsyncSelect
  7. iOS 第三方登录 !
  8. 递归javascript_使用freeCodeCamp挑战解释了JavaScript中的递归
  9. Nginx在Linux下的安装部署
  10. uniapp将h5链接打包成安卓
  11. java 支付宝预下单失败,系统异常,预下单状态未知!!! connect timed out
  12. LNK2019 无法解析的外部符号 __imp__PyRun_SimpleStringFlags
  13. 查看Windows系统的开机、关机时间
  14. 学生成绩管理管理系统
  15. python 检查是否为数字(包括正负数、浮点数)
  16. SNMP实现网络状态监控
  17. 转自周金涛:一辈子有三次暴富机会,最近的一次在2019年?2018年你要怎么做? (2018-02-21 17:49:17)...
  18. 台式机耳机插上没声音_如何在台式机上使用移动耳机麦克风
  19. 6.6 PowerBI系列之DAX函数专题 -调节器TREATAS动态建立关系
  20. 堆和栈在内存中的区别是什么?

热门文章

  1. xp系统本地服务器环境配置,Windows XP安装Apache环境图文详解Windows服务器操作系统 -电脑资料...
  2. python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码
  3. 记录一些使用git过程中的bug
  4. SpringMVC的数据响应方式-页面跳转
  5. [USACO1.3]修理牛棚 Barn Repair
  6. matlab canny边缘,matlab – 定向Canny边缘检测
  7. ubuntu上训练yolov3: Caught ValueError in DataLoader worker process 0. string indices must be integers.
  8. Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】
  9. 操作系统【信号量集机制、“读者-写者”问题】
  10. IntelliJ IDEA 导入 IntelliJ IDEA 创建好的JavaWeb项目!