一、Clock

  废话不多说,先上效果图再说。如效果图所示:clock的日期显示为YY/MM/DD这种简洁明了格式,时间则为当前系统时间(也就是北京时间)。Clock内部以儒略日(JulianDate)维护时间。其起始日期为公元前4713年1月1日中午12时,这和我们常用的格林威治时间略有不同,主要是天文学家使用。

  下面上代码:

  1.   var date = new Date();
      //可返回格林威治时间和本地时间之间的时差
    var h = 0 - date.getTimezoneOffset();
  2. viewer.animation.viewModel.timeFormatter = function(date, viewModel) {
        //重新构造一个当前系统时间的儒略日
    var dateZone = Cesium.JulianDate.addMinutes(date,h,new Cesium.JulianDate());
  3. var gregorianDate = Cesium.JulianDate.toGregorianDate(dateZone);
  4. var millisecond = Math.round(gregorianDate.millisecond );
         //倍速是否小于1,小于1则显示毫秒级
  5. if(Math.abs(viewModel._clockViewModel.multiplier) < 1){
  6. return Cesium.sprintf("%02d:%02d:%02d.%03d",gregorianDate.hour,gregorianDate.minute,gregorianDate.second,gregorianDate.millisecond);
  7. }
  8. return Cesium.sprintf("%02d:%02d:%02d",gregorianDate.hour,gregorianDate.minute,gregorianDate.second);
  9. }
  10. //设置日期
    viewer.animation.viewModel.dateFormatter = function(date, viewModel) {
  11. var dateZone = Cesium.JulianDate.addMinutes(date,h,new Cesium.JulianDate());
  12. var gregorianDate = Cesium.JulianDate.toGregorianDate(dateZone);
          //设置格式为xx/xx/xx,格式可自定义为任意你想要的
  13. return Cesium.sprintf("%4d/%02d/%02d",gregorianDate.year,gregorianDate.month,gregorianDate.day);
  14. }

二、TimeLine

  TimeLine的改造就比较麻烦些,因为Cesium并没有留有API接口(目前据我所知,如有错请留言给我更改),所以我们需要去修改源码。

  首先定位显示元素的class--->cesium-timeline-ticLabel,然后我们到Cesium.js中的116399行找到对应的元素。

  然后我们会发现<span>+k+</span>,显示的值为k,而k在上面为this.makeLabel(N);为TimeLine实例调用makeLabel()方法。我们在定位到makeLabel()方法。

  直接上改造完的代码

  1. Timeline.prototype.makeLabel = function(e) {
  2. var date = new Date();
  3. var h = 0 - date.getTimezoneOffset();
         //由于Cesium都是以JulianDate作为默认日期,所以参数e肯定为JulianDate类型,所以我们可以像上面clock改造一样改造
  4. var dateZone = Cesium.JulianDate.addMinutes(e,h,new Cesium.JulianDate());
  5. var t = JulianDate.toGregorianDate(dateZone)
  6. , i = t.millisecond
  7. , r = " UTC";
  8. if (0 < i && this._timeBarSecondsSpan < 3600) {
  9. for (r = Math.floor(i).toString(); r.length < 3; )
  10. r = "0" + r;
  11. r = "." + r
  12. }
         //这里就是设置格式的地方
  13. return t.year + "/" + t.month + "/" + t.day + " " + twoDigits(t.hour) + ":" + twoDigits(t.minute) + ":" + twoDigits(t.second)
  14. }

  这样就完成了系统本地化的一些小改造,由于目前也是刚接触Cesium,还有很多不了解的。之后做项目进行哪些比较好的改造尽分享给大家

Cesium小插件改造--clock和timeline的更多相关文章

  1. iOS桌面小插件 Widget Extension

    iOS桌面小插件 Widget Extension 这个插件时iOS14以后才出现的,基于SwiftUI 旧项目新建时可能一堆错误,其中一个时要把插件target 开发sdk版本设置为14.0以上 新 ...

  2. 开源Unity小插件CheatConsole

    我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...

  3. 浮动【电梯】或【回到顶部】小插件:iElevator.js

    iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null ...

  4. aBowman >>可以运用到自己博客上的小插件

    大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...

  5. 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage

    https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...

  6. 查看SQLSERVER内部数据页面的小插件Internals Viewer

    原文:查看SQLSERVER内部数据页面的小插件Internals Viewer 查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名 ...

  7. 仿javascript中confirm()方法的小插件

    10天没有写博客了,不知道为什么,心里感觉挺不舒服的,可能这是自己给自己规定要去完成的事情,没有按照计划执行,总会心里不怎么舒服.最近事情挺多的,终于今天抽空来更新一下博客了. 今天写的是一个小插件. ...

  8. 闲聊select和input常用的小插件

    前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...

  9. WebSocket小插件

    一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...

随机推荐

  1. HDU 6047 Maximum Sequence(贪心+线段树)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...

  2. gulp——用自动化构建工具增强你的工作流程

    想要使用gulp,就要了解gulp,就像追自己的爱豆,你要知道爱豆的喜好.兴趣 简单的了解你的新爱豆———安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 ...

  3. vue-cli3 搭建 vue 项目

    vue-cli3 搭建 vue 项目 项目是在mac的环境下配置的 win的同学请移步[https://www.cnblogs.com/zhaomeizi/p/8483597.html] 安装 nod ...

  4. 10 python学习笔记-操作数据库(十)

    在功能.接口测试中,常常需要通过数据库的操作,来准备数据.检测环境及核对功能.接口的数据库操作是否正确. 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备. 环境检查及数据库断言的功能.数据 ...

  5. 设计模式(十七)Observer模式

    在Observer模式中,当观察对象的状态发生变化时,会通知给观察者.Observer模式适用于根据对象状态进行相应处理的场景. 首先看一下示例程序的视图. 然后用实际代码来理解这种设计模式. pac ...

  6. springboot(3)——配置文件和自动配置原理详细讲解

    原文地址 目录 概述 1. 配置文件作用 2.配置文件位置 3.配置文件的定义 3.1如果是定义普通变量(数字 字符串 布尔) 3.2如果是定义对象.Map 3.3如果是定义数组 4.配置文件的使用 ...

  7. 学习笔记15_ASP母版页

    *网页母版页设计通用样式#header:{height:100px;width:1000px}#leftDiv:{float:left;width:200px}#mainDiv:{margin-lef ...

  8. NOIP模拟27

    两个机房又和在一起考试 开场看了看T1,感觉挺水的,过. T2,这个式子有点奇怪,暂时没什么思路,过 T3,好像保留最后几位换个根处理一下就行了,过,先去打T1 于是T1大概打了0.5h,连暴力带正解 ...

  9. 欧拉路&&欧拉回路

    T1是欧拉路板子,但我不会,直接爆炸.. 这玩意就是个dfs,但我以前一直以为欧拉路只能$O(nm)$求 今天才知道可以$O(n+m)$ 欧拉路判定: 无向:起点终点为奇度点,其余偶度 有向:起点终点 ...

  10. P3106 [USACO14OPEN]GPS的决斗(最短路)

    化简:够简的了.....但是!翻译绝对有锅. 这个最短路是从n到每个点的单源最短路,也就是最短路径树. 那么,思路就很明确了.建两个图,然后跑两边SPFA,记录下最短路径. 然后,对于两点之间的边,如 ...