cesium时间相关知识

GMT、UTC 时间标准

GMT(格林威治标准时间)曾经是世界标准时,但随着时间的推移,UTC(协调世界时)取代了GMT成为现在的世界标准时。UTC比GMT更加精准,因为它基于原子时,并通过闰秒来确保与天文时间的同步。在不需要精确到秒的应用中,GMT和UTC通常可以视为等同。

Cesium 中的时间处理

Cesium 使用 JulianDate 来表示时间,它基于儒略历,并精确到秒。在Cesium中,JulianDate 默认使用UTC时间标准。

JavaScript 中的时间处理

在JavaScript中,Date 对象通常表示本地时间,但也可以用于表示UTC时间。默认情况下,当使用 new Date() 创建日期对象时,它使用本地时区。然而,JavaScript也提供了方法来处理UTC时间,例如 Date.UTC() 和日期对象的 getUTCHours()getUTCMinutes() 等方法。

时间格式转换

当需要将北京时间(或其他时区的时间)转换为UTC时间以在Cesium中使用时,可以这样做:

 
javascriptlet bj_time = new Date("2024/4/15 10:00:00"); // 假设这是北京时间
// 转换为UTC时间(如果bj_time是本地时间)
let utc_offset = bj_time.getTimezoneOffset() * 60000; // 获取时区偏移量(以毫秒为单位)
let utc_time = new Date(bj_time.getTime() - utc_offset);

// 将UTC时间转换为Cesium的JulianDate
let cesium_utc_time = Cesium.JulianDate.fromDate(utc_time);

viewer.clock.currentTime = cesium_utc_time; // 设置Cesium的当前时间

JulianDate 的使用

JulianDate 是Cesium中用于表示时间的类,它有两个主要属性:dayNumber 和 secondsOfDay。可以使用 JulianDate.addSeconds() 方法在给定的 JulianDate 上增加秒数。

 
javascriptlet currentTime = Cesium.JulianDate.addSeconds(Cesium.JulianDate.now(), 500, new Cesium.JulianDate());
// currentTime 现在表示当前时间增加500秒后的时间

SampledPositionProperty 用于动画

SampledPositionProperty 类允许你为Cesium中的模型定义随时间变化的位置。你可以通过添加样本点来定义模型在不同时间的位置。

 
javascriptvar property = new Cesium.SampledPositionProperty();
for (var z = 0; z < moveData.length; z++) {
var item = moveData[z];
var thisTime = Cesium.JulianDate.fromDate(new Date(item.time)); // 假设item.time是字符串格式的日期
var position = Cesium.Cartesian3.fromDegrees(item.position.longitude, item.position.latitude, item.position.height); // 假设position包含经纬度和高度
property.addSample(thisTime, position);
}

Cesium 时钟事件监听

你可以使用 viewer.clock.onTick 事件来监听Cesium时钟的“滴答”事件,并在每帧中执行自定义逻辑。同样,你可以使用 removeEventListener 来移除之前添加的事件监听器。

 
javascriptfunction checkIfAnimationEnded() {
// 你的逻辑代码
}

viewer.clock.onTick.addEventListener(checkIfAnimationEnded); // 添加监听器
// ...
viewer.clock.onTick.removeEventListener(checkIfAnimationEnded); // 移除监听器

viewer.clock.shouldAnimate = true; // 启用时钟动画
viewer.clock.shouldAnimate = false; // 暂停时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值