Cesium小插件改造--clock和timeline
一、Clock
废话不多说,先上效果图再说。如效果图所示:clock的日期显示为YY/MM/DD这种简洁明了格式,时间则为当前系统时间(也就是北京时间)。Clock内部以儒略日(JulianDate)维护时间。其起始日期为公元前4713年1月1日中午12时,这和我们常用的格林威治时间略有不同,主要是天文学家使用。
下面上代码:
var date = new Date();
//可返回格林威治时间和本地时间之间的时差
var h = 0 - date.getTimezoneOffset();
viewer.animation.viewModel.timeFormatter = function(date, viewModel) {
//重新构造一个当前系统时间的儒略日
var dateZone = Cesium.JulianDate.addMinutes(date,h,new Cesium.JulianDate());
var gregorianDate = Cesium.JulianDate.toGregorianDate(dateZone);
var millisecond = Math.round(gregorianDate.millisecond );
//倍速是否小于1,小于1则显示毫秒级
if(Math.abs(viewModel._clockViewModel.multiplier) < 1){
return Cesium.sprintf("%02d:%02d:%02d.%03d",gregorianDate.hour,gregorianDate.minute,gregorianDate.second,gregorianDate.millisecond);
}
return Cesium.sprintf("%02d:%02d:%02d",gregorianDate.hour,gregorianDate.minute,gregorianDate.second);
}
//设置日期
viewer.animation.viewModel.dateFormatter = function(date, viewModel) {
var dateZone = Cesium.JulianDate.addMinutes(date,h,new Cesium.JulianDate());
var gregorianDate = Cesium.JulianDate.toGregorianDate(dateZone);
//设置格式为xx/xx/xx,格式可自定义为任意你想要的
return Cesium.sprintf("%4d/%02d/%02d",gregorianDate.year,gregorianDate.month,gregorianDate.day);
}
二、TimeLine
TimeLine的改造就比较麻烦些,因为Cesium并没有留有API接口(目前据我所知,如有错请留言给我更改),所以我们需要去修改源码。
首先定位显示元素的class--->cesium-timeline-ticLabel,然后我们到Cesium.js中的116399行找到对应的元素。
然后我们会发现<span>+k+</span>,显示的值为k,而k在上面为this.makeLabel(N);为TimeLine实例调用makeLabel()方法。我们在定位到makeLabel()方法。
直接上改造完的代码
Timeline.prototype.makeLabel = function(e) {
var date = new Date();
var h = 0 - date.getTimezoneOffset();
//由于Cesium都是以JulianDate作为默认日期,所以参数e肯定为JulianDate类型,所以我们可以像上面clock改造一样改造
var dateZone = Cesium.JulianDate.addMinutes(e,h,new Cesium.JulianDate());
var t = JulianDate.toGregorianDate(dateZone)
, i = t.millisecond
, r = " UTC";
if (0 < i && this._timeBarSecondsSpan < 3600) {
for (r = Math.floor(i).toString(); r.length < 3; )
r = "0" + r;
r = "." + r
}
//这里就是设置格式的地方
return t.year + "/" + t.month + "/" + t.day + " " + twoDigits(t.hour) + ":" + twoDigits(t.minute) + ":" + twoDigits(t.second)
}
这样就完成了系统本地化的一些小改造,由于目前也是刚接触Cesium,还有很多不了解的。之后做项目进行哪些比较好的改造尽分享给大家
Cesium小插件改造--clock和timeline的更多相关文章
- iOS桌面小插件 Widget Extension
iOS桌面小插件 Widget Extension 这个插件时iOS14以后才出现的,基于SwiftUI 旧项目新建时可能一堆错误,其中一个时要把插件target 开发sdk版本设置为14.0以上 新 ...
- 开源Unity小插件CheatConsole
我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...
- 浮动【电梯】或【回到顶部】小插件:iElevator.js
iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null ...
- aBowman >>可以运用到自己博客上的小插件
大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...
- 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage
https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...
- 查看SQLSERVER内部数据页面的小插件Internals Viewer
原文:查看SQLSERVER内部数据页面的小插件Internals Viewer 查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名 ...
- 仿javascript中confirm()方法的小插件
10天没有写博客了,不知道为什么,心里感觉挺不舒服的,可能这是自己给自己规定要去完成的事情,没有按照计划执行,总会心里不怎么舒服.最近事情挺多的,终于今天抽空来更新一下博客了. 今天写的是一个小插件. ...
- 闲聊select和input常用的小插件
前言 在pc端的项目中,经常会用到表单标签,莫过于是select和input这两种,这两种相当常用.但往往原生的功能不尽人意,即使 input中type有n多属性,甚至连时间控件都有,但仍旧满足不了我 ...
- WebSocket小插件
一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...
随机推荐
- c++异常处理的方法
c++异常处理 程序运行时常会碰到一些异常情况,例如:做除法的时候除数为 0:用户输入年龄时输入了一个负数:用 new 运算符动态分配空间时,空间不够导致无法分配:访问数组元素时,下标越界:打开文件读 ...
- 微信小程序和微信小程序之间的跳转和传参示例代码附讲解
一:微信小程序跳转 使用限制 需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位置,则开发者将无法调用此接口自动跳转至其他小程序. 需要用户确认跳转 从 2.3.0 版本开始,在 ...
- 面试又被 Java 基础难住了?推荐你看看这篇文章。
本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 1. 面向对象和面向过程的区别 面向过程 :面向过程性能比面 ...
- (二)AS给button添加点击事件
三种方法给Button添加点击事件 (一)通过button的id,添加继承View.OnClickListener的监听实现 <Button android:id="@+id/btn_ ...
- SpringBoot与MybatisPlus整合之活动记录(十五)
活动记录和正常的CRUD效果是一样的,此处只当一个拓展,了解即可 pom.xml <dependencies> <dependency> <groupId>org. ...
- Element-ui-安装
1.node环境安装 1.1.根据自己电脑位数,下载最新版node.js并安装https://nodejs.org/en/ 1.2.下载git并安装https://gitforwindows.org/ ...
- reduce,map,filter 的用法
# filter用法 (对每一个数据进行筛选,满足条件的就保留)# 1,filter(功能函数,容器类型数据)# 2,过滤出来是一个地址,用list,或tuple进行包装# 3,过滤出来的是原容器类型 ...
- Shiro笔记---身份验证
1.shiro有哪些主要功能 2.搭建shiro环境(*) idea2018.2.maven3.5.4.jdk1.8 项目结构: pom.xml: <dependencies> < ...
- Windows中的JDK和Linux中的JDK是否相同
前言 在面试中,被问到了一个问题: Windows中的JDK和Linux中的JDK是否相同? 其实,以上这个问题是一个子问题.原本的问题是:如何理解Java的跨平台机制.由于原问题显得有些宽泛,因此延 ...
- Netty 入门,这一篇文章就够了
Netty是Java领域有名的开源网络库,特点是高性能和高扩展性,因此很多流行的框架都是基于它来构建的,比如我们熟知的Dubbo.Rocketmq.Hadoop等,针对高性能RPC,一般都是基于Net ...