| | |
| | | function newSite(x,y,z,h,p,time,ids){ |
| | | if(x!=null&&y!=null&&z!=null&&h!=null&&p!=null&&time!=null&&ids!=null){ |
| | | this.position_x=x; |
| | | this.position_y=y; |
| | | this.position_z=z; |
| | | this.pitch=p; |
| | | this.heading=h; |
| | | this.time=time; |
| | | this.ids=ids; |
| | | }else{ |
| | | function newSite(x, y, z, h, p, time, ids) { |
| | | if (x != null && y != null && z != null && h != null && p != null && time != null && ids != null) { |
| | | this.position_x = x; |
| | | this.position_y = y; |
| | | this.position_z = z; |
| | | this.pitch = p; |
| | | this.heading = h; |
| | | this.time = time; |
| | | this.ids = ids; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | function Fly_NZC(viewer){ |
| | | this.viewer=viewer; |
| | | this.scene=viewer.scene; |
| | | this.entities=viewer.entities; |
| | | |
| | | function Fly_NZC(viewer) { |
| | | this.viewer = viewer; |
| | | this.scene = viewer.scene; |
| | | this.entities = viewer.entities; |
| | | //全部飞行站点数组 |
| | | this.allSites=[]; |
| | | var that =this; |
| | | this.checkIds=function(ids){ |
| | | for(var i=0;i<that.allSites.length+1;i++){ |
| | | if(i==that.allSites.length){ |
| | | return false; |
| | | break; |
| | | } |
| | | if(that.allSites[i].ids==ids){ |
| | | return i; |
| | | break; |
| | | } |
| | | } |
| | | }; |
| | | this.RouteCollection={ |
| | | //线颜色 |
| | | //LineColor:Cesium.Color.WHITE, |
| | | //站点和路线显隐是否开启 |
| | | point_show:true, |
| | | line_show:true, |
| | | //站点图片路径 |
| | | img_path:"widgets/FlyRoute/images/location4.png", |
| | | //飞行路线颜色 |
| | | /* setLineColor:function(){ |
| | | Cesium.Color.WHITE, |
| | | },*/ |
| | | AddRoute:function(Route){ |
| | | this.deleteEntities(); |
| | | that.allSites=[]; |
| | | for (var i = 0; i < Route.length; i++) { |
| | | let cartesian3 = Cesium.Cartesian3.fromDegrees(Route[i].lgtd, Route[i].lttd, Route[i].height); |
| | | let site = {"ids":Route[i].id,"position_x":cartesian3.x,"position_y":cartesian3.y,"position_z":cartesian3.z, |
| | | "pitch":Cesium.Math.toRadians(Route[i].pitch),"heading":Cesium.Math.toRadians(Route[i].heading), |
| | | "roll":Cesium.Math.toRadians(Route[i].roll),"time":Route[i].time}; |
| | | that.allSites[i]=site; |
| | | } |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //设置点图片 |
| | | setPointImg:function(path){ |
| | | |
| | | this.img_path=path; |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //mod=0为设置点的可见,1为设置线的可见,2为控制点和线的可见 |
| | | setVisible:function(mod,bool){ |
| | | if(mod===0){ |
| | | this.point_show=bool; |
| | | }if(mod===1){ |
| | | this.line_show=bool; |
| | | }if(mod===2){ |
| | | this.point_show=bool; |
| | | this.line_show=bool; |
| | | } |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //通过传入站点类添加站点 |
| | | AddSite:function(newSite){ |
| | | //判断id是否重复 |
| | | var bool=that.checkIds(newSite.ids); |
| | | if(bool){ |
| | | return false; |
| | | }else{ |
| | | var Site = {}; |
| | | Site.position_x=newSite.position_x; |
| | | Site.position_y=newSite.position_y; |
| | | Site.position_z=newSite.position_z; |
| | | Site.heading=newSite.heading; |
| | | Site.pitch=newSite.pitch; |
| | | //Site.roll=camera.roll; |
| | | Site.time=newSite.time; |
| | | Site.ids=newSite.ids; |
| | | that.allSites.push(Site); |
| | | this.controlEntities(); |
| | | return true; |
| | | } |
| | | }, |
| | | //添加当前视角为站点需要传入id |
| | | AddSiteByView:function (ids) { |
| | | //判断id是否重复 |
| | | var bool=that.checkIds(ids); |
| | | if(bool){ |
| | | return false; |
| | | }else{ |
| | | try{ |
| | | var position=that.scene.camera.position; |
| | | //获取当前相机位置参数(飞行用) |
| | | var Site = {}; |
| | | Site.position_x=position.x; |
| | | Site.position_y=position.y; |
| | | Site.position_z=position.z; |
| | | Site.heading=that.scene.camera.heading; |
| | | Site.pitch=that.scene.camera.pitch; |
| | | Site.roll=that.scene.camera.roll; |
| | | Site.time=3; |
| | | Site.ids=ids; |
| | | //添加到站点数组 |
| | | that.allSites.push(Site); |
| | | this.controlEntities(); |
| | | console.log(that.allSites); |
| | | return true; |
| | | }catch(e){ |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | }, |
| | | //根据索引获取站点信息 |
| | | getSiteByIndex:function (index) { |
| | | return that.allSites[index]; |
| | | }, |
| | | deleteEntities:function(){ |
| | | //50000+为线id |
| | | for(var i=0;i<that.allSites.length;i++){ |
| | | that.entities.removeById(that.allSites[i].ids); |
| | | } |
| | | for(var i=1;i<500000;i++){ |
| | | var ids=parseInt(50000+i); |
| | | var entities_del=that.entities.getById(ids); |
| | | if(entities_del){ |
| | | that.entities.remove(entities_del); |
| | | }else{ |
| | | break; |
| | | } |
| | | |
| | | } |
| | | }, |
| | | controlEntities:function(){ |
| | | var position_1,position_2,x1,x2,y1,y2,z1,z2,point_1_cartographic,point_2_cartographic; |
| | | //添加和删除站点,更改颜色或图片后,先清空entities,然后重新添加。 |
| | | this.deleteEntities(); |
| | | //添加显示的站点 |
| | | var length=that.allSites.length; |
| | | if(this.point_show==true){ |
| | | for(var j=0;j<length;j++){ |
| | | that.entities.add({ |
| | | position : new Cesium.Cartesian3(that.allSites[j].position_x,that.allSites[j].position_y,that.allSites[j].position_z), |
| | | billboard :{ |
| | | image :this.img_path, |
| | | width:30, |
| | | height:40, |
| | | }, |
| | | //name : 10000+j, |
| | | id:that.allSites[j].ids |
| | | }); |
| | | } |
| | | } |
| | | //添加显示的线 |
| | | if(this.line_show==true){ |
| | | for(var j=1;j<length;j++){ |
| | | //将笛卡尔坐标转为经纬度坐标,用于绘制线 |
| | | position_1=new Cesium.Cartesian3(that.allSites[j].position_x,that.allSites[j].position_y,that.allSites[j].position_z) |
| | | point_1_cartographic = Cesium.Cartographic.fromCartesian(position_1); |
| | | x1 = Cesium.Math.toDegrees(point_1_cartographic.longitude); |
| | | y1 = Cesium.Math.toDegrees(point_1_cartographic.latitude); |
| | | z1 = point_1_cartographic.height; |
| | | |
| | | position_2=new Cesium.Cartesian3(that.allSites[j-1].position_x,that.allSites[j-1].position_y,that.allSites[j-1].position_z) |
| | | point_2_cartographic = Cesium.Cartographic.fromCartesian(position_2); |
| | | x2 = Cesium.Math.toDegrees(point_2_cartographic.longitude); |
| | | y2 = Cesium.Math.toDegrees(point_2_cartographic.latitude); |
| | | z2 = point_2_cartographic.height; |
| | | that.entities.add({ |
| | | id:50000+j, |
| | | // name : drowallStops.length, |
| | | polyline : { |
| | | positions : Cesium.Cartesian3.fromDegreesArrayHeights([x1,y1,z1,x2,y2,z2]), |
| | | width : 5, |
| | | material : Cesium.Color.WHITE |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | //如果关闭显示了站点和飞行路线,添加的新站点和飞行路线将先不显示 |
| | | if(this.line_show==false){ |
| | | for(var j=1;j<length;j++){ |
| | | //将笛卡尔坐标转为经纬度坐标,用于绘制线 |
| | | position_1=new Cesium.Cartesian3(that.allSites[j].position_x,that.allSites[j].position_y,that.allSites[j].position_z) |
| | | point_1_cartographic = Cesium.Cartographic.fromCartesian(position_1); |
| | | x1 = Cesium.Math.toDegrees(point_1_cartographic.longitude); |
| | | y1 = Cesium.Math.toDegrees(point_1_cartographic.latitude); |
| | | z1 = point_1_cartographic.height; |
| | | |
| | | position_2=new Cesium.Cartesian3(that.allSites[j-1].position_x,that.allSites[j-1].position_y,that.allSites[j-1].position_z) |
| | | point_2_cartographic = Cesium.Cartographic.fromCartesian(position_2); |
| | | x2 = Cesium.Math.toDegrees(point_2_cartographic.longitude); |
| | | y2 = Cesium.Math.toDegrees(point_2_cartographic.latitude); |
| | | z2 = point_2_cartographic.height; |
| | | that.entities.add({ |
| | | id:50000+j, |
| | | show:false, |
| | | // name : drowallStops.length, |
| | | polyline : { |
| | | positions : Cesium.Cartesian3.fromDegreesArrayHeights([x1,y1,z1,x2,y2,z2]), |
| | | width : 5, |
| | | material : Cesium.Color.WHITE |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | } |
| | | if(this.point_show==false){ |
| | | for(var j=0;j<length;j++){ |
| | | that.entities.add({ |
| | | position : new Cesium.Cartesian3(that.allSites[j].position_x,that.allSites[j].position_y,that.allSites[j].position_z), |
| | | billboard :{ |
| | | image :this.img_path, |
| | | width:30, |
| | | height:40, |
| | | }, |
| | | show:false, |
| | | //name : 10000+j, |
| | | id:that.allSites[j].ids |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | removeAllSites:function(){ |
| | | this.deleteEntities(); |
| | | that.allSites=[]; |
| | | |
| | | }, |
| | | removeSiteById:function(ids){ |
| | | var id=that.checkIds(ids) |
| | | if(id){ |
| | | this.deleteEntities(); |
| | | that.allSites.splice(id,1); |
| | | this.controlEntities(); |
| | | |
| | | }else{ |
| | | return false |
| | | } |
| | | |
| | | } |
| | | |
| | | }; |
| | | this.l=0; |
| | | this.b=0; |
| | | //用于判断执行的时暂停还是停止 |
| | | this.play_bool=true; |
| | | var x,y,z,p,h; |
| | | this.setInterval_fly=null; |
| | | this.setcamera=function(){ |
| | | //设置俯仰角 |
| | | var set=that.allSites[that.l].time*50 |
| | | that.viewer.camera.setView({ |
| | | orientation: { |
| | | heading :viewer.scene.camera.heading+h/set, |
| | | pitch :viewer.scene.camera.pitch+p/set, |
| | | roll : 0.0 |
| | | } |
| | | }); |
| | | //move移动相机 |
| | | that.viewer.camera.move(new Cesium.Cartesian3(x,y,z),1/set); |
| | | that.b--; |
| | | if(that.b<=0){ |
| | | that.l++; |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly=null; |
| | | that.Interval(); |
| | | // that.b=0; |
| | | } |
| | | }; |
| | | this.Interval=function(){ |
| | | var l=that.l; |
| | | if(that.play_bool){ |
| | | that.b=that.allSites[l].time*50 |
| | | }else{ |
| | | that.play_bool=true; |
| | | this.allSites = []; |
| | | var that = this; |
| | | this.checkIds = function (ids) { |
| | | for (var i = 0; i < that.allSites.length + 1; i++) { |
| | | if (i == that.allSites.length) { |
| | | return false; |
| | | break; |
| | | } |
| | | if (that.allSites[i].ids == ids) { |
| | | return i; |
| | | break; |
| | | } |
| | | } |
| | | if(that.allSites[l+1]){ |
| | | x=that.allSites[l+1].position_x-that.allSites[l].position_x; |
| | | y=that.allSites[l+1].position_y-that.allSites[l].position_y; |
| | | z=that.allSites[l+1].position_z-that.allSites[l].position_z; |
| | | p=that.allSites[l+1].pitch-that.allSites[l].pitch; |
| | | h=that.allSites[l+1].heading-that.allSites[l].heading; |
| | | |
| | | var tem = Cesium.Math.toDegrees(that.allSites[l+1].heading) - Cesium.Math.toDegrees(that.allSites[l].heading); |
| | | if(Math.abs(tem)>180){ |
| | | if(tem>=0){ |
| | | tem = 360 - tem; |
| | | }; |
| | | this.RouteCollection = { |
| | | //线颜色 |
| | | //LineColor:Cesium.Color.WHITE, |
| | | //站点和路线显隐是否开启 |
| | | point_show: true, |
| | | line_show: true, |
| | | //站点图片路径 |
| | | img_path: "widgets/FlyRoute/images/location4.png", |
| | | //飞行路线颜色 |
| | | /* setLineColor:function(){ |
| | | Cesium.Color.WHITE, |
| | | },*/ |
| | | AddRoute: function (Route) { |
| | | this.deleteEntities(); |
| | | that.allSites = []; |
| | | for (var i = 0; i < Route.length; i++) { |
| | | let cartesian3 = Cesium.Cartesian3.fromDegrees(Route[i].lgtd, Route[i].lttd, Route[i].height); |
| | | let site = { |
| | | "ids": Route[i].id, |
| | | "position_x": cartesian3.x, |
| | | "position_y": cartesian3.y, |
| | | "position_z": cartesian3.z, |
| | | "pitch": Cesium.Math.toRadians(Route[i].pitch), |
| | | "heading": Cesium.Math.toRadians(Route[i].heading), |
| | | "roll": Cesium.Math.toRadians(Route[i].roll), |
| | | "time": Route[i].time |
| | | }; |
| | | that.allSites[i] = site; |
| | | } |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //设置点图片 |
| | | setPointImg: function (path) { |
| | | |
| | | this.img_path = path; |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //mod=0为设置点的可见,1为设置线的可见,2为控制点和线的可见 |
| | | setVisible: function (mod, bool) { |
| | | if (mod === 0) { |
| | | this.point_show = bool; |
| | | } |
| | | if (mod === 1) { |
| | | this.line_show = bool; |
| | | } |
| | | if (mod === 2) { |
| | | this.point_show = bool; |
| | | this.line_show = bool; |
| | | } |
| | | this.controlEntities(); |
| | | |
| | | }, |
| | | //通过传入站点类添加站点 |
| | | AddSite: function (newSite) { |
| | | //判断id是否重复 |
| | | var bool = that.checkIds(newSite.ids); |
| | | if (bool) { |
| | | return false; |
| | | } else { |
| | | var Site = {}; |
| | | Site.position_x = newSite.position_x; |
| | | Site.position_y = newSite.position_y; |
| | | Site.position_z = newSite.position_z; |
| | | Site.heading = newSite.heading; |
| | | Site.pitch = newSite.pitch; |
| | | //Site.roll=camera.roll; |
| | | Site.time = newSite.time; |
| | | Site.ids = newSite.ids; |
| | | that.allSites.push(Site); |
| | | this.controlEntities(); |
| | | return true; |
| | | } |
| | | }, |
| | | //添加当前视角为站点需要传入id |
| | | AddSiteByView: function (ids) { |
| | | //判断id是否重复 |
| | | var bool = that.checkIds(ids); |
| | | if (bool) { |
| | | return false; |
| | | } else { |
| | | try { |
| | | var position = that.scene.camera.position; |
| | | //获取当前相机位置参数(飞行用) |
| | | var Site = {}; |
| | | Site.position_x = position.x; |
| | | Site.position_y = position.y; |
| | | Site.position_z = position.z; |
| | | Site.heading = that.scene.camera.heading; |
| | | Site.pitch = that.scene.camera.pitch; |
| | | Site.roll = that.scene.camera.roll; |
| | | Site.time = 3; |
| | | Site.ids = ids; |
| | | //添加到站点数组 |
| | | that.allSites.push(Site); |
| | | this.controlEntities(); |
| | | console.log(that.allSites); |
| | | return true; |
| | | } catch (e) { |
| | | return false; |
| | | } |
| | | else{ |
| | | |
| | | } |
| | | }, |
| | | //根据索引获取站点信息 |
| | | getSiteByIndex: function (index) { |
| | | return that.allSites[index]; |
| | | }, |
| | | deleteEntities: function () { |
| | | //50000+为线id |
| | | for (var i = 0; i < that.allSites.length; i++) { |
| | | that.entities.removeById(that.allSites[i].ids); |
| | | } |
| | | for (var i = 1; i < 500000; i++) { |
| | | var ids = parseInt(50000 + i); |
| | | var entities_del = that.entities.getById(ids); |
| | | if (entities_del) { |
| | | that.entities.remove(entities_del); |
| | | } else { |
| | | break; |
| | | } |
| | | |
| | | } |
| | | }, |
| | | controlEntities: function () { |
| | | var position_1, position_2, x1, x2, y1, y2, z1, z2, point_1_cartographic, point_2_cartographic; |
| | | //添加和删除站点,更改颜色或图片后,先清空entities,然后重新添加。 |
| | | this.deleteEntities(); |
| | | //添加显示的站点 |
| | | var length = that.allSites.length; |
| | | if (this.point_show == true) { |
| | | for (var j = 0; j < length; j++) { |
| | | that.entities.add({ |
| | | position: new Cesium.Cartesian3(that.allSites[j].position_x, that.allSites[j].position_y, that.allSites[j].position_z), |
| | | billboard: { |
| | | image: this.img_path, |
| | | width: 30, |
| | | height: 40, |
| | | }, |
| | | //name : 10000+j, |
| | | id: that.allSites[j].ids |
| | | }); |
| | | } |
| | | } |
| | | //添加显示的线 |
| | | if (this.line_show == true) { |
| | | for (var j = 1; j < length; j++) { |
| | | //将笛卡尔坐标转为经纬度坐标,用于绘制线 |
| | | position_1 = new Cesium.Cartesian3(that.allSites[j].position_x, that.allSites[j].position_y, that.allSites[j].position_z) |
| | | point_1_cartographic = Cesium.Cartographic.fromCartesian(position_1); |
| | | x1 = Cesium.Math.toDegrees(point_1_cartographic.longitude); |
| | | y1 = Cesium.Math.toDegrees(point_1_cartographic.latitude); |
| | | z1 = point_1_cartographic.height; |
| | | |
| | | position_2 = new Cesium.Cartesian3(that.allSites[j - 1].position_x, that.allSites[j - 1].position_y, that.allSites[j - 1].position_z) |
| | | point_2_cartographic = Cesium.Cartographic.fromCartesian(position_2); |
| | | x2 = Cesium.Math.toDegrees(point_2_cartographic.longitude); |
| | | y2 = Cesium.Math.toDegrees(point_2_cartographic.latitude); |
| | | z2 = point_2_cartographic.height; |
| | | that.entities.add({ |
| | | id: 50000 + j, |
| | | // name : drowallStops.length, |
| | | polyline: { |
| | | positions: Cesium.Cartesian3.fromDegreesArrayHeights([x1, y1, z1, x2, y2, z2]), |
| | | width: 5, |
| | | material: Cesium.Color.WHITE |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | //如果关闭显示了站点和飞行路线,添加的新站点和飞行路线将先不显示 |
| | | if (this.line_show == false) { |
| | | for (var j = 1; j < length; j++) { |
| | | //将笛卡尔坐标转为经纬度坐标,用于绘制线 |
| | | position_1 = new Cesium.Cartesian3(that.allSites[j].position_x, that.allSites[j].position_y, that.allSites[j].position_z) |
| | | point_1_cartographic = Cesium.Cartographic.fromCartesian(position_1); |
| | | x1 = Cesium.Math.toDegrees(point_1_cartographic.longitude); |
| | | y1 = Cesium.Math.toDegrees(point_1_cartographic.latitude); |
| | | z1 = point_1_cartographic.height; |
| | | |
| | | position_2 = new Cesium.Cartesian3(that.allSites[j - 1].position_x, that.allSites[j - 1].position_y, that.allSites[j - 1].position_z) |
| | | point_2_cartographic = Cesium.Cartographic.fromCartesian(position_2); |
| | | x2 = Cesium.Math.toDegrees(point_2_cartographic.longitude); |
| | | y2 = Cesium.Math.toDegrees(point_2_cartographic.latitude); |
| | | z2 = point_2_cartographic.height; |
| | | that.entities.add({ |
| | | id: 50000 + j, |
| | | show: false, |
| | | // name : drowallStops.length, |
| | | polyline: { |
| | | positions: Cesium.Cartesian3.fromDegreesArrayHeights([x1, y1, z1, x2, y2, z2]), |
| | | width: 5, |
| | | material: Cesium.Color.WHITE |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | } |
| | | if (this.point_show == false) { |
| | | for (var j = 0; j < length; j++) { |
| | | that.entities.add({ |
| | | position: new Cesium.Cartesian3(that.allSites[j].position_x, that.allSites[j].position_y, that.allSites[j].position_z), |
| | | billboard: { |
| | | image: this.img_path, |
| | | width: 30, |
| | | height: 40, |
| | | }, |
| | | show: false, |
| | | //name : 10000+j, |
| | | id: that.allSites[j].ids |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | removeAllSites: function () { |
| | | this.deleteEntities(); |
| | | that.allSites = []; |
| | | |
| | | }, |
| | | removeSiteById: function (ids) { |
| | | var id = that.checkIds(ids) |
| | | if (id) { |
| | | this.deleteEntities(); |
| | | that.allSites.splice(id, 1); |
| | | this.controlEntities(); |
| | | |
| | | } else { |
| | | return false |
| | | } |
| | | |
| | | } |
| | | |
| | | }; |
| | | this.l = 0; |
| | | this.b = 0; |
| | | //用于判断执行的时暂停还是停止 |
| | | this.play_bool = true; |
| | | var x, y, z, p, h; |
| | | this.setInterval_fly = null; |
| | | this.setcamera = function () { |
| | | //设置俯仰角 |
| | | var set = that.allSites[that.l].time * 50 |
| | | that.viewer.camera.setView({ |
| | | orientation: { |
| | | heading: viewer.scene.camera.heading + h / set, |
| | | pitch: viewer.scene.camera.pitch + p / set, |
| | | roll: 0.0 |
| | | } |
| | | }); |
| | | //move移动相机 |
| | | that.viewer.camera.move(new Cesium.Cartesian3(x, y, z), 1 / set); |
| | | that.b--; |
| | | if (that.b <= 0) { |
| | | that.l++; |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly = null; |
| | | that.Interval(); |
| | | // that.b=0; |
| | | } |
| | | }; |
| | | this.Interval = function () { |
| | | var l = that.l; |
| | | if (that.play_bool) { |
| | | that.b = that.allSites[l].time * 50 |
| | | } else { |
| | | that.play_bool = true; |
| | | } |
| | | if (that.allSites[l + 1]) { |
| | | x = that.allSites[l + 1].position_x - that.allSites[l].position_x; |
| | | y = that.allSites[l + 1].position_y - that.allSites[l].position_y; |
| | | z = that.allSites[l + 1].position_z - that.allSites[l].position_z; |
| | | p = that.allSites[l + 1].pitch - that.allSites[l].pitch; |
| | | h = that.allSites[l + 1].heading - that.allSites[l].heading; |
| | | |
| | | var tem = Cesium.Math.toDegrees(that.allSites[l + 1].heading) - Cesium.Math.toDegrees(that.allSites[l].heading); |
| | | if (Math.abs(tem) > 180) { |
| | | if (tem >= 0) { |
| | | tem = 360 - tem; |
| | | } else { |
| | | tem = 360 + tem; |
| | | } |
| | | h = Cesium.Math.toRadians(tem); |
| | | } |
| | | //that.b=that.allSites[l].time*20 |
| | | that.setInterval_fly=setInterval(that.setcamera,20); |
| | | }else{ |
| | | that.play_bool=true; |
| | | that.l=0; |
| | | that.setInterval_fly = setInterval(that.setcamera, 20); |
| | | } else { |
| | | that.play_bool = true; |
| | | that.l = 0; |
| | | that.scene.screenSpaceCameraController.enableRotate = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | } |
| | | |
| | | |
| | | }; |
| | | |
| | | this.flyManager={ |
| | | this.flyManager = { |
| | | //用于储存暂停时的位置 |
| | | Site_pause:{}, |
| | | play:function(){ |
| | | //如果之前点的时停止重新开始飞行 |
| | | if(that.allSites.length>1){ |
| | | that.scene.screenSpaceCameraController.enableRotate = false; |
| | | that.scene.screenSpaceCameraController.enableTranslate = false; |
| | | that.scene.screenSpaceCameraController.enableZoom = false; |
| | | that.scene.screenSpaceCameraController.enableTilt = false; |
| | | that.scene.screenSpaceCameraController.enableLook = false; |
| | | if(that.play_bool){ |
| | | //设置初始点 |
| | | that.scene.camera.setView({ |
| | | destination : new Cesium.Cartesian3(that.allSites[that.l].position_x,that.allSites[that.l].position_y,that.allSites[that.l].position_z), |
| | | orientation : { |
| | | heading : that.allSites[that.l].heading, |
| | | pitch : that.allSites[that.l].pitch, |
| | | roll : that.allSites[that.l].roll |
| | | } |
| | | }); |
| | | that.Interval(); |
| | | }else{ |
| | | //如果之前是暂停,继续飞行 |
| | | that.scene.camera.setView({ |
| | | //将经度、纬度、高度的坐标转换为笛卡尔坐标 |
| | | destination : new Cesium.Cartesian3(this.Site_pause.position_x,this.Site_pause.position_y,this.Site_pause.position_z), |
| | | orientation : { |
| | | heading : this.Site_pause.heading, |
| | | pitch : this.Site_pause.pitch, |
| | | roll : this.Site_pause.roll |
| | | } |
| | | }); |
| | | that.Interval(); |
| | | } |
| | | } |
| | | |
| | | }, |
| | | stop:function(){ |
| | | if( that.setInterval_fly!=null){ |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly=null; |
| | | } |
| | | that.l=0; |
| | | that.play_bool=true; |
| | | that.scene.screenSpaceCameraController.enableRotate = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | }, |
| | | pause:function(){ |
| | | |
| | | if( that.setInterval_fly!=null){ |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly=null; |
| | | that.play_bool=false; |
| | | } |
| | | //获取暂停时的camera数据 |
| | | var position=that.scene.camera.position; |
| | | this.Site_pause.position_x=position.x; |
| | | this.Site_pause.position_y=position.y; |
| | | this.Site_pause.position_z=position.z; |
| | | this.Site_pause.heading=that.scene.camera.heading; |
| | | this.Site_pause.pitch=that.scene.camera.pitch; |
| | | this.Site_pause.roll=that.scene.camera.roll; |
| | | |
| | | Site_pause: {}, |
| | | play: function () { |
| | | //如果之前点的时停止重新开始飞行 |
| | | if (that.allSites.length > 1) { |
| | | that.scene.screenSpaceCameraController.enableRotate = false; |
| | | that.scene.screenSpaceCameraController.enableTranslate = false; |
| | | that.scene.screenSpaceCameraController.enableZoom = false; |
| | | that.scene.screenSpaceCameraController.enableTilt = false; |
| | | that.scene.screenSpaceCameraController.enableLook = false; |
| | | |
| | | that.scene.screenSpaceCameraController.enableRotate = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | console.log(that.play_bool); |
| | | |
| | | }, |
| | | SetStartSite:function(ids){ |
| | | var bool=that.checkIds(ids); |
| | | if(bool){ |
| | | that.l=bool; |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | if (that.play_bool) { |
| | | //设置初始点 |
| | | that.scene.camera.setView({ |
| | | destination: new Cesium.Cartesian3(that.allSites[that.l].position_x, that.allSites[that.l].position_y, that.allSites[that.l].position_z), |
| | | orientation: { |
| | | heading: that.allSites[that.l].heading, |
| | | pitch: that.allSites[that.l].pitch, |
| | | roll: that.allSites[that.l].roll |
| | | } |
| | | }); |
| | | if (that.setInterval_fly) { |
| | | clearInterval(that.setInterval_fly); |
| | | } |
| | | that.Interval(); |
| | | |
| | | }, |
| | | viewToSite:function(site){ |
| | | that.scene.camera.setView({ |
| | | destination : new Cesium.Cartesian3(site.position_x,site.position_y,site.position_z), |
| | | orientation : { |
| | | heading : site.heading, |
| | | pitch : site.pitch, |
| | | roll : site.roll |
| | | } |
| | | }); |
| | | } else { |
| | | //如果之前是暂停,继续飞行 |
| | | that.scene.camera.setView({ |
| | | //将经度、纬度、高度的坐标转换为笛卡尔坐标 |
| | | destination: new Cesium.Cartesian3(this.Site_pause.position_x, this.Site_pause.position_y, this.Site_pause.position_z), |
| | | orientation: { |
| | | heading: this.Site_pause.heading, |
| | | pitch: this.Site_pause.pitch, |
| | | roll: this.Site_pause.roll |
| | | } |
| | | }); |
| | | |
| | | } |
| | | that.Interval(); |
| | | } |
| | | } |
| | | |
| | | }, |
| | | stop: function () { |
| | | if (that.setInterval_fly != null) { |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly = null; |
| | | } |
| | | that.l = 0; |
| | | that.play_bool = true; |
| | | that.scene.screenSpaceCameraController.enableRotate = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | }, |
| | | pause: function () { |
| | | |
| | | if (that.setInterval_fly != null) { |
| | | clearInterval(that.setInterval_fly); |
| | | that.setInterval_fly = null; |
| | | that.play_bool = false; |
| | | } |
| | | //获取暂停时的camera数据 |
| | | var position = that.scene.camera.position; |
| | | this.Site_pause.position_x = position.x; |
| | | this.Site_pause.position_y = position.y; |
| | | this.Site_pause.position_z = position.z; |
| | | this.Site_pause.heading = that.scene.camera.heading; |
| | | this.Site_pause.pitch = that.scene.camera.pitch; |
| | | this.Site_pause.roll = that.scene.camera.roll; |
| | | |
| | | |
| | | that.scene.screenSpaceCameraController.enableRotate = true; |
| | | that.scene.screenSpaceCameraController.enableTranslate = true; |
| | | that.scene.screenSpaceCameraController.enableZoom = true; |
| | | that.scene.screenSpaceCameraController.enableTilt = true; |
| | | that.scene.screenSpaceCameraController.enableLook = true; |
| | | |
| | | }, |
| | | SetStartSite: function (ids) { |
| | | var bool = that.checkIds(ids); |
| | | if (bool) { |
| | | that.l = bool; |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | }, |
| | | viewToSite: function (site) { |
| | | that.scene.camera.setView({ |
| | | destination: new Cesium.Cartesian3(site.position_x, site.position_y, site.position_z), |
| | | orientation: { |
| | | heading: site.heading, |
| | | pitch: site.pitch, |
| | | roll: site.roll |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | }; |
| | | } |
| | | } |