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(()=&gt;{return this.isThirdPersonal || this.viewFollowBack},false) ,
      //   uri: GlobalConfig.PlaneGLTFServer,
      //   scale: 1,
      //   minimumPixelSize: 128,
      // },
      //轨迹路径线
      path:{
        show: new Cesium.CallbackProperty(()=&gt;{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),
        })
      }
    })

原文地址:https://blog.csdn.net/lying_19/article/details/129883546

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49762.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注