czml中获取entitiy 每200毫秒的position
时间: 2023-11-22 09:56:13 浏览: 131
Cesium中simple.czml文件示例
要获取一个实体(entity)每200毫秒的位置,你可以使用Cesium中的Clock对象和ClockTickEvent事件。
首先,你需要创建一个Clock对象,设置它的startTime和stopTime属性,以及时钟的multiplier属性(例如,设置为0.5表示时钟以一半的速度运行)。
然后,你需要订阅ClockTickEvent事件,并在事件处理程序中更新实体的位置。在ClockTickEvent事件处理程序中,你可以使用Clock对象的currentTime属性获取当前时间,并根据需要更新实体的位置。
以下是一个示例代码:
```javascript
var viewer = new Cesium.Viewer('cesiumContainer');
// 创建一个实体
var entity = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
point : {
pixelSize : 10,
color : Cesium.Color.YELLOW
}
});
// 创建一个时钟
var clock = new Cesium.Clock({
startTime : Cesium.JulianDate.fromIso8601('2017-01-01T00:00:00Z'),
stopTime : Cesium.JulianDate.fromIso8601('2017-01-01T01:00:00Z'),
currentTime : Cesium.JulianDate.fromIso8601('2017-01-01T00:00:00Z'),
multiplier : 0.5,
clockRange : Cesium.ClockRange.LOOP_STOP
});
// 订阅ClockTickEvent事件
viewer.clock.onTick.addEventListener(function(clock) {
var time = clock.currentTime;
var position = entity.position.getValue(time);
console.log(position); // 打印实体的位置
});
// 启动时钟
viewer.clockViewModel.clock = clock;
```
在上面的代码中,实体的位置是使用entity.position.getValue(time)方法获取的,其中time是当前时间。getValue()方法返回一个Cartesian3对象,它包含实体在指定时间的位置。你可以在事件处理程序中使用这个位置来更新实体的位置,或者将其保存到数组中以供后续使用。
阅读全文