开局一张图,如图实现船舶的运动轨迹回放

原理

基于Entity的availability属性和postion属性。

其中availability可以设置时间轴,position中定义了Entity的位置和时间信息。

时间轴类似于一个触发器,当在某个时间,模型就移动到某个地方,因为是一个序列,模型不会跳跃,而是会计算一个均速移动过去。

实现

想要实现轨迹回放,我们需要一组轨迹坐标组、一个定义好时间点状态的Property,以及船舶图片(也可以使用model代替)。

拿到轨迹坐标组后,通过计算获取节点的距离,时间,生成完整可用的Property作为我们Entity的position属性。一般拿到的坐标点数据是经纬度坐标,需要转换为笛卡尔坐标。

构建Property和时间轴。定义开始时间结束时间并给到viewer的clock实例上代表时间段。


const startTime = new Date(dayjs(trackList[0].dynamicTime).valueOf())

const endTime = new Date(dayjs(maxTime).valueOf())

const start = Cesium.JulianDate.fromDate(startTime)

const stop = Cesium.JulianDate.fromDate(endTime)

const positionProperty = new Cesium.SampledPositionProperty()

positionProperty.setInterpolationOptions({

interpolationDegree: 1,

interpolationAlgorithm: Cesium.LagrangePolynomialApproximation

})

for (let i = 0; i < trackList.length; i++) {

const { longi


此内容 登录注册 后可见
4 个月 后

请问能实现很多条船按不同的路径和不同的时间起始点来移动吗...

此内容 登录注册 后可见
    1 个月 后
    说点什么吧...