cesium中实现entity动画

时间轴设置

//时间轴设置
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;//获取动画实体本身的结束时间

  })
}

cesium中关于时间转换,和比较的方法在这里

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值