时间轴设置
//时间轴设置
viewer.clock.startTime = Cesium.JulianDate.fromDate (new Date("2020-2-1 00:00:00"));//开始时间new Date("2020-2-1 00:00:00")(可以是时间戳)
viewer.clock.stopTime = Cesium.JulianDate.fromDate (new Date("2020-2-2 00:00:00"));//结束时间new Date("2020-2-1 00:00:00")(可以是时间戳)
viewer.clock.currentTime = Cesium.JulianDate.fromDate (new Date("2020-2-1 00:00:00"));//当前时间
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; //到末尾时间再次循环
viewer.clock.multiplier = 10;//乘数(值越大,时间轴速度越快)
动画实体创建
//动画实体创建
function _createEntity(property, start, stop) {
return viewer.entities.add({
availability: new Cesium.TimeIntervalCollection([
new Cesium.TimeInterval({
start: start,//动画实体开始时间 Cesium.JulianDate.fromDate( new Date("2020-2-1 00:00:00"));
stop: stop,//动画实体结束时间 Cesium.JulianDate.fromDate( new Date("2020-2-2 00:00:00"));
}),
]),
position:property,
orientation: new Cesium.VelocityOrientationProperty(property),//根据位置移动自动计算方向。
show:false,
billboard:{
image:'../images/icon.png',
width:20,
height:20
}
});
}
创建时间节点样本
//创建时间节点样本(单个时间节点添加)
function _createSampleMove(Cartesian3,timeObj){
let time = Cesium.JulianDate.fromDate(new Date(timeObj));
let property = new Cesium.SampledPositionProperty();
property.addSample(time,Cartesian3);//某个时刻对应的坐标
return property;
}
//创建时间节点样本(多个个时间节点添加)
function _createSampleMoveS(Cartesian3s,timeObjs){
let times = timeObjs.map(t => Cesium.JulianDate.fromDate(new Date(t)));
let property = new Cesium.SampledPositionProperty();
property.addSamples(times,Cartesian3s);//某组时刻对应的某组坐标
return property;
}
删除时间节点样本
//删除时间节点样本 (单个删除)
function _clearSampleMove(property,timeObj){
let time = Cesium.JulianDate.fromDate(new Date(timeObj));
property.removeSample(time);
}
//删除时间节点样本(多个删除)
function _clearSampleMoves(property,startTime,endTime){
let time = {
start:Cesium.JulianDate.fromDate(new Date(startTime)),
stop:Cesium.JulianDate.fromDate(new Date(endTime)),
isStartIncluded:true,//是否包含开始时间
isStopIncluded:true//是否包含结束时间
};
property.removeSamples(time);
}
更新时间节点样本
其实所谓的更新就是删除掉在添加
//更新时间节点样本(单个更新)
function _updateOperate(property,Cartesian3,timeObj){
let time = Cesium.JulianDate.fromDate(new Date(timeObj));
property.addSample(time,Cartesian3);
}
//更新时间节点样本(多个更新)
function _updateOperates(property,Cartesian3s,timeObjs){
let times = timeObjs.map(t => Cesium.JulianDate.fromDate(new Date(t)));
property.addSamples(times,Cartesian3s);
}
开启时间轴监听
//开启时间轴监听
function _eventMoveListener(){
//此监听返回一个函数,执行监听自动关闭
let _eventListener = viewer.scene.preUpdate.addEventListener(function(){
let time = viewer.clock.currentTime;
let position = moveEntity.position.getValue(time);//获取当前时刻的坐标
//moveEntity.availablility.get(0).start;//获取动画实体本身的开始时间
//moveEntity.availablility.get(0).stop;//获取动画实体本身的结束时间
})
}