效果:
网上查询很多方法个人觉得较为复杂冗余 以下按照个人想法完成效果:
1.设置模拟时间
2.初始化轨道坐标
3.按照坐标把轨道画出来
4.添加卫星模型
5.优化卫星轨迹
1.设置模拟时间代码:
// 设定了模拟时间的边界
var start = new Cesium.JulianDate.fromDate(new Date()); // 当前时间
start = Cesium.JulianDate.addHours(start, 8, new Cesium.JulianDate()); //东八区时间
// 结束时间
var stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
//确保查看器处于预期的时间
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; //循环结束时
//时间变化来控制速度 // 时间速率,数字越大时间过的越快
viewer.clock.multiplier = 10;
2.初始化轨道坐标代码:
// 动态控制模型的位置,达到模型沿轨迹平滑移动的目的 后面优化卫星轨迹会用到这个
var positionArr = new Cesium.SampledPositionProperty();
var lon = Math.floor(Math.random() * 360);
var lat = Math.floor(Math.random() * 360);
var line = []; //轨道坐标集合
for (let k = lat; k <= 360 + lat; k += 30) {
let obj = {
lon: lon,
lat: k,
time: k - lat,
alt: 2000000,
};
var time = Cesium.JulianDate.addSeconds(
start,
obj.time,
new Cesium.JulianDate()
);
// 按轨迹画点以便于直观验证轨迹坐标点
// viewer.entities.add({
// position: Cesium.Cartesian3.fromDegrees(obj.lon