Appearance
概述
在 Cesium 中,实体(Entity)的运动轨迹 是指一个物体(飞机、车辆、人、卫星等)在一段时间内沿着空间路径移动的过程。Cesium 通过 时间驱动 + 位置采样等实现实体的动态运动。

javascript
const timeStepInSeconds = 30
const totalSeconds = timeStepInSeconds * (flightData.length - 1)
const start = Cesium.JulianDate.fromIso8601("2020-03-09T23:10:00Z")
const stop = Cesium.JulianDate.addSeconds(start, totalSeconds, new Cesium.JulianDate())
viewer.clock.startTime = start.clone()
viewer.clock.stopTime = stop.clone()
viewer.clock.currentTime = start.clone()
viewer.timeline.zoomTo(start, stop)
viewer.clock.multiplier = 50
viewer.clock.shouldAnimate = true // 也可以在配置中设置shouldAnimate
const positionProperty = new Cesium.SampledPositionProperty()
for (let i = 0; i < flightData.length; i++) {
const dataPoint = flightData[i]
const time = Cesium.JulianDate.addSeconds(start, i * timeStepInSeconds, new Cesium.JulianDate())
const position = Cesium.Cartesian3.fromDegrees(dataPoint.longitude, dataPoint.latitude, dataPoint.height)
positionProperty.addSample(time, position)
viewer.entities.add({
description: `Location: (${dataPoint.longitude}, ${dataPoint.latitude}, ${dataPoint.height})`,
position,
point: { pixelSize: 10, color: Cesium.Color.RED }
})
}
const pointEntity = viewer.entities.add({
// 在规定的start和stop之间实体是可见的
availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({ start: start, stop: stop })]),
position: positionProperty,
point: { pixelSize: 30, color: Cesium.Color.GREEN },
path: new Cesium.PathGraphics({ width: 3 })
})
viewer.trackedEntity = pointEntity