美文网首页开源
Cesium控制模型移动的函数2019-11-15

Cesium控制模型移动的函数2019-11-15

作者: 宿州刘德华 | 来源:发表于2019-11-15 08:40 被阅读0次

/**
 * 模型移动函数 米
 * @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;
        }


    }

}


相关文章

网友评论

    本文标题:Cesium控制模型移动的函数2019-11-15

    本文链接:https://www.haomeiwen.com/subject/pxrjictx.html