liuyg
2021-07-02 25ce610f6ecca7325e7a743dc032c4a76559c63d
widgets/FlyRoute/fly.js
@@ -1,423 +1,500 @@
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 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;
   //全部飞行站点数组
   this.allSites=[];
   var that =this;
   this.checkIds=function(ids){
        for(var i=0;i<that.allSites.length+1;i++){
            if(i==that.allSites.length){
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;
                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;
          }
            if (that.allSites[i].ids == ids) {
                return i;
                break;
            }
        }
        img_path
    };
    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;
             }
        },
        //设置点图片
        setPointImg: function (path) {
          }
       },
       //根据索引获取站点信息
       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;
            this.img_path = path;
            this.controlEntities();
                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;
        },
        //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();
                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.scene.screenSpaceCameraController.enableRotate = true;
           that.scene.screenSpaceCameraController.enableTranslate = true;
           that.scene.screenSpaceCameraController.enableZoom = true;
           that.scene.screenSpaceCameraController.enableTilt = true;
           that.scene.screenSpaceCameraController.enableLook = true;
      }
   };
   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;
          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;
        },
        //通过传入站点类添加站点
        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;
          }else{
             return false;
          }
            }
        },
        //添加当前视角为站点需要传入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();
                    return true;
                } catch (e) {
                    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
               }
            });
            }
        },
        //根据索引获取站点信息
        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.scene.screenSpaceCameraController.enableRotate = true;
            that.scene.screenSpaceCameraController.enableTranslate = true;
            that.scene.screenSpaceCameraController.enableZoom = true;
            that.scene.screenSpaceCameraController.enableTilt = true;
            that.scene.screenSpaceCameraController.enableLook = true;
        }
    };
    this.flyManager = {
        img_path: "widgets/FlyRoute/images/location4.png",
        //用于储存暂停时的位置
        Site_pause: {},
        play: function () {
            for (var i = 0; i < that.allSites.length; i++) {
                that.entities.removeById(that.allSites[i].ids);
            }
            //如果之前点的时停止重新开始飞行
            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
                        }
                    });
                    if (that.setInterval_fly) {
                        clearInterval(that.setInterval_fly);
                    }
                    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 () {
            //添加显示的站点
            var length = that.allSites.length;
            for (var j = 0; j < length; j++) {
                var flag = false;
                for (var i = 0; i < that.entities.values.length; i++) {
                    if (that.allSites[j].ids == that.entities.values[i].id) {
                        flag = true
                    }
                }
                if (flag == false) {
                    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 (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 () {
            //添加显示的站点
            var length = that.allSites.length;
            for (var j = 0; j < length; j++) {
                var flag = false;
                for (var i = 0; i < that.entities.values.length; i++) {
                    if (that.allSites[j].ids == that.entities.values[i].id) {
                        flag = true
                    }
                }
                if (flag == false) {
                    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 (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
                }
            });
        }
    };
}