WebGL之飞行管理

LGL

前言:现在webgl实现飞行,是先加载一个fpf文件,读取fpf飞行站点的值。默认加载的飞行路线的速度或者飞行到站点的事件有时并不能满足需求,因此本篇介绍如何更改飞行路线的设置

一、加载飞行路线

FlyManager——飞行管理类,从fpf路线读取路线和站点参数,控制飞行的开始、暂停、停止以及站点事件等。

			var routes = new Cesium.RouteCollection(viewer.entities);
            //添加fpf飞行文件,fpf由SuperMap iDesktop生成
            var fpfUrl = './SampleData/fpf/niaocao.fpf';
            routes.fromFile(fpfUrl);
            //初始化飞行管理
            var flyManager = new Cesium.FlyManager({
                scene: scene,
                routes: routes
            });
                $('#play').click(function () {
                    flyManager && flyManager.play();
                });
                $('#pause').click(function () {
                    flyManager && flyManager.pause();
                });
                $('#stop').click(function () {
                    flyManager && flyManager.stop();
                });

二、飞行路线管理

Route——飞行路线对象类。管理整条路线显隐,飞行速度等
在这里插入图片描述
更改飞行路线的设置可以按以下代码

var currentRoute = flyManager.currentRoute;//获取飞行路线
currentRoute.isLineVisible = true;
currentRoute.isStopVisible = true;
currentRoute.speed  = 50;
currentRoute.totalDuration = 50;

三、飞行站点管理

RouteStop——飞行站点对象类。飞行路线由多个飞行站点构成。站点事件,参数的管理

在这里插入图片描述
(一)更改飞行站点
代码参考如下

flyManager.readyPromise.then(function () {
	var allStops = flyManager.getAllRouteStops();
	 for (var i = 0, j = allStops.length; i < j; i++) {
		 allStops[i].waitTime= 3s
	 }
})

(二)飞行到站点执行自定义事件
实际项目中,可能每个飞行站点的播放事件都不一样,则可以使用站点到达事件实现功能

function evt(){
....
}
flyManager.stopArrived.addEventListener(function (routeStop) {
	If (routeStop.index == 1){
		flyManager.pause()//先让飞行暂停
		evt()
		flyManager.play()//事件播放完继续飞行
	}
 });

总结
飞行功能在三维场景中应用较为广泛,更改飞行站点的一些参数主要使用以上接口更改,更改参数时,可以先去以上接口查找是否有符合需求的参数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值