Cesium进阶-利用时间轴模拟历史轨迹

Cesium提供了Clock,可以对任意时间段内的球进行设置。同时,提供timeline,用于进行对目标时间段内的场景进行回放。

为了更好的利用Clock,Cesium还提供了其它类型,这些类型可以支持设置指定JulianDate时间点上做特定的事情。

例如:SamplePositionProperty,根据官方文档释义,是SampleProperty和PositionProperty的结合。而SampleProperty,更是与JulianDate分不开:A Property whose value is interpolated for a given time from the provided set of samples and specified interpolation algorithm and degree.

PositionProperty更容易理解,支持笛卡尔坐标系(Cartesian3)。

我实现实施轨迹的思路,就是利用SamplePositionProperty与Clock和TimeLine。

已知条件:1.历史轨迹线

                  2.每一段的行驶速度(或每一个节点的经过时间)

实现思路:将每一个节点的位置与时间添加至SamplePositionProperty中

const property = new Cesium.SampledPositionProperty();
for (let i = 1; i < this.stops.length; i++) {
  property.addSample(this.stops[i].time,this.stops[i].position)
}

显示方案:将SamplePositionProperty作为Entity的Position添加至Scene中:

  this.planeRouteEntity = this.viewer.viewer.entities.add({
      //与时间轴关联
      availability:new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({
        start:{起始时间},
        stop: {截止时间}
      })]),
      position:this.planeSampleProperty,
      //根据速度计算点
      orientation: new Cesium.VelocityOrientationProperty(this.planeSampleProperty),
      // model:{
      //   show:new Cesium.CallbackProperty(()=>{return this.isThirdPersonal || this.viewFollowBack},false) ,
      //   uri: GlobalConfig.PlaneGLTFServer,
      //   scale: 1,
      //   minimumPixelSize: 128,
      // },
      //轨迹路径线
      path:{
        show: new Cesium.CallbackProperty(()=>{return this.isThirdPersonal},false) ,
        leadTime: 0,
        trailTime: Number.POSITIVE_INFINITY,
        width: 5,
        resolution: 1,
        material: new Cesium.PolylineGlowMaterialProperty({
          glowPower: 0.3,
          color: Cesium.Color.fromBytes(0,255,255),
        })
      }
    })

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值