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()//事件播放完继续飞行
}
});
总结
飞行功能在三维场景中应用较为广泛,更改飞行站点的一些参数主要使用以上接口更改,更改参数时,可以先去以上接口查找是否有符合需求的参数。