/**
* 模型移动函数 米
* @param model
* @param meters
* @param seconds
*/
function modelMoveMeters(model,meters,seconds) {
if((!model)||(!meters)||(!seconds)){
return
}
let modelNowPosition =Cartesian3_to_WGS84 (getEntityPosition(model));
var ln = 0.00001141;
var la = 0.00000899;
let modelEndPosition ={
lng:modelNowPosition.lng+ln*meters.lng,
lat:modelNowPosition.lat+la*meters.lat,
alt:modelNowPosition.alt+meters.alt,
};
modelMove(model,modelNowPosition,modelEndPosition,seconds);
}
/**
* 模型移动函数
* @param model
* @param startPosition 起点位置
* @param endPosition 终点位置
* @param seconds 秒数
*/
export function modelMove(model,startPosition,endPosition,seconds) {
if(model){
let p1 = {
lng:parseFloat(startPosition.lng),
lat:parseFloat(startPosition.lat),
alt:parseFloat(startPosition.alt)
};
let p2={
lng:parseFloat(endPosition.lng),
lat:parseFloat(endPosition.lat),
alt:parseFloat(endPosition.alt)
};
let start =Cesium.JulianDate.now();
let stop = Cesium.JulianDate.addSeconds(start,seconds, new Cesium.JulianDate());
let stop_ = Cesium.JulianDate.addSeconds(start,seconds+5000000, new Cesium.JulianDate());
if (typeof model.availability !== "undefined" && typeof model.availability.addInterval !== "undefined") {
if (model.availability.length > 2) {
model.availability.removeInterval(model.availability.get(0));
}
model.availability.addInterval(
new Cesium.TimeInterval({
start: start,
stop: stop_
})
);
model.position.addSample(start, wGS84ToCartesian(p1));
model.position.addSample(stop, wGS84ToCartesian(p2));
model.position.addSample(stop_, wGS84ToCartesian(p2));
} else {
model.availability = new Cesium.TimeIntervalCollection([
new Cesium.TimeInterval({
start: start,
stop: stop_
})
]);
let property = new Cesium.SampledPositionProperty();
property.addSample(start, wGS84ToCartesian(p1));
property.addSample(stop, wGS84ToCartesian(p2));
property.addSample(stop_, wGS84ToCartesian(p2));
model.position = property;
}
}
}
网友评论