首页 / 浏览问题 / 三维GIS / 问题详情
航线飞行可以动态修改速度吗
30EXP 2017年05月09日
this._flyManager = new Cesium.FlyManager({
        scene : self._scene,
        routes : routes,
        speed : speed
    });

这个是在初始化的时候设置了速度,有没有set_speed之类的方法可以直接设置更改速度的

1个回答

可以的哈~

用speed属性:

speed : Number

获取或设置当前飞行速度,该属性仅当飞行模式为定时飞行时有效。

http://support.supermap.com.cn:8090/iserver/iClient/for3D/webgl/Build/Documentation/FlyManager.html

3,389EXP 2017年05月10日

具体是怎么设置的能给个例子吗,我需要的效果是这样的,在点击开始的时候可以获取速度值,并按这个值的速度飞行,当点击了暂停或停止按钮后,在点击开始时仍然可以动态修改速度

开始之后,您再获取到_flyManager ,修改speed是可行的
var flyLineRoute = function(option){
    this._scene = option.scene;
    this._fpfPath = option.fpfPath;
    this._speedInput = option.speedInput;
    self = this;
    this.speed = Number(self._speedInput.val());

    var routes = new Cesium.RouteCollection();
    routes.fromFile(this._fpfPath);

    this._flyManager = new Cesium.FlyManager({
        scene : self._scene,
        routes : routes,
        speed : self.speed
    });

};

flyLineRoute.prototype = {
    //开始飞行
    play:function(){
        this._flyManager && this._flyManager.play();
    },
    //暂停飞行
    pause:function(){
        this._flyManager && this._flyManager.pause();
    },
    //停止飞行
    stop:function(){
        this._flyManager && this._flyManager.stop();
    }
}

这个是我的代码,具体应该怎么修改,还请指点
$("#flyroute").click(function(){
        var fpfPath = $(".sel-dropdown input").attr("value");
        if(fpfPath != undefined){
            var speedInput = $(".iptadd");
            var option = {
                "scene":scene,
                "fpfPath":fpfPath,
                "speedInput":speedInput
            };
            if(flylineroute == undefined)
             flylineroute = new flyLineRoute(option);
        }else{
            alert("请先选择飞行路线!");
        }
        var t=setTimeout("flylineroute.play();",10);
    });

这个是执行的代码,初始化了上面自定义的flyLineRoute类以后,执行play()。不用延迟方法会报错(好像是异步加载的问题);如果不进行这个判断 if(flylineroute == undefined),点击暂停后开始也会从原点开始(会跟点击停止的效果一样)
嗨,我刚试了,最新版本确实改不了,我反馈一下哈。有进展了回复您。
您好,了解清楚了。

目前这个速度只能修改飞行路线,就是在idesktop中打开您的数据,并且加载您的飞行路线,用飞行管理调。 WebGL播放的效果和桌面播放的效果是一样的。
所以现在是设置不了也修改不了速度的对吧
是的,只能在桌面修改飞行路线文件。
嗨,有个这个routeStop.duration属性可以设置:

    flyManager.stopArrived.addEventListener(function(routeStop){
                var stopName = routeStop.stopName;
                var entity = new Cesium.Entity({
                    description : '到达站点 : ' + stopName,
                    name : stopName
                });
                viewer.selectedEntity = entity;
                setTimeout(function(){
                    viewer.selectedEntity = undefined;
                },1000);
                routeStop.waitTime = 1;
                routeStop.duration = 100;
            });
意思是这个站点到下个站点的持续时间。
...