liuyg
2021-07-02 25ce610f6ecca7325e7a743dc032c4a76559c63d
widgets/spatialAnalysis/Widget.js
@@ -31,23 +31,181 @@
            var that = this;
            // 暴露在外的接口
            var domHtmls = [
            topic.subscribe("closeOnceUse", lang.hitch(this, this.closeOnceUse));
            var domHtmls = [//默认
               {
                  name: '可视分析',
                  classs: 'visibleArea-tool',
                  img: '../../images/addL/ksy.png'
                  img: './images/addL/ksy.png'
               }, {
                  name: '剖面分析',
                  classs: 'profileAnalysis-tool',
                  img: '../../images/addL/剖面分析.png'
               }, {
                  name: '坡度分析',
                  classs: 'slope-tool',
                  img: '../../images/addL/pdpx.png'
                  img: './images/addL/剖面分析.png'
               }
               , {//做好静态,
                  name: '建造实体',
                  classs: 'modelDiagram-tool',
                  img: './images/addL/实体.png'
               }
               // , {//https://blog.csdn.net/supermapsupport/article/details/100134590
               //    //需要iServer发布成三维服务
               //    name: '坡度分析',
               //    classs: 'slope-tool',
               //    img: './images/addL/pdpx.png'
               // }
               // , {//SQL查询,//做好
               //    name: 'SQL查询',
               //    classs: 'SQLQuery-tool',
               //    img: './images/addL/pdpx.png'
               // }
               , {//地形开挖,//做好
                  name: '地形开挖',
                  classs: 'digTheEarth-tool',
                  img: './images/addL/地形开挖.png'
               }
               , {//方量分析//做好
                  name: '方量分析',
                  classs: 'volumeAnalysis-tool',
                  img: './images/addL/方量分析.png'
               },
               {//通视分析
                  name: '通视分析',
                  classs: 'throughSee-tool',
                  img: './images/addL/通视分析.png'
               },
               {//平面裁剪
                  name: '平面裁剪',
                  classs: 'clippingPlanes-tool',
                  img: './images/addL/pingmian.png'
               },
               {//BOX裁剪
                  name: 'BOX裁剪',
                  classs: 'BOXTailoring-tool',
                  img: './images/addL/BOX裁剪.png'
               }
               ,
               {//Cross裁剪
                  name: 'Cross裁剪',
                  classs: 'crossTailoring-tool',
                  img: './images/addL/BOX裁剪.png'
               }
            ];
            var dom = $('#spatialAnalysis-main');
            var str = '';
            that.beginSpatialAnalysis(domHtmls);
            var isit = false;
            $('.ccslius').click(() => {
               isit = false;
            })
            $('.ccsliu').dblclick(() => {//测试开关 点击图例其他的图片
               if (isit) {
                  var domHtmls2 = [
                     {
                        name: '可视分析',
                        classs: 'visibleArea-tool',
                        img: './images/addL/ksy.png'
                     }, {
                        name: '剖面分析',
                        classs: 'profileAnalysis-tool',
                        img: './images/addL/剖面分析.png'
                     }
                     , {//https://blog.csdn.net/supermapsupport/article/details/100134590
                        //需要iServer发布成三维服务
                        name: '坡度分析',
                        classs: 'slope-tool',
                        img: './images/addL/pdpx.png'
                     }
                     , {//做好静态,
                        name: '建造实体',
                        classs: 'modelDiagram-tool',
                        img: './images/addL/pdpx.png'
                     }
                     , {//SQL查询,//做好
                        name: 'SQL查询',
                        classs: 'SQLQuery-tool',
                        img: './images/addL/pdpx.png'
                     }
                     , {//地形开挖,//做好
                        name: '地形开挖',
                        classs: 'digTheEarth-tool',
                        img: './images/addL/pdpx.png'
                     }, {//方量分析//做好
                        name: '方量分析',
                        classs: 'volumeAnalysis-tool',
                        img: './images/addL/pdpx.png'
                     }
                     , {//空间查询
                        name: '空间查询',
                        classs: 'spatialQuery-tool',
                        img: './images/addL/pdpx.png'
                     }
                     , {//多边形裁剪
                        name: '多边形裁剪',
                        classs: 'polygonClipping-tool',
                        img: './images/addL/pdpx.png'
                     },
                     {//通视分析
                        name: '通视分析',
                        classs: 'throughSee-tool',
                        img: './images/addL/pdpx.png'
                     },
                     {//平面裁剪
                        name: '平面裁剪',
                        classs: 'clippingPlanes-tool',
                        img: './images/addL/pdpx.png'
                     },
                     {//BOX裁剪
                        name: 'BOX裁剪',
                        classs: 'BOXTailoring-tool',
                        img: './images/addL/BOX裁剪.png'
                     }
                     ,
                     {//建造模型
                        name: '建造模型',
                        classs: 'modesssssllll',
                        img: './images/addL/pdpx.png'
                     }
                     ,
                     {//清除模型
                        name: '清除模型',
                        classs: 'modesssss2222',
                        img: './images/addL/pdpx.png'
                     }
                  ];
                  that.beginSpatialAnalysis(domHtmls2);
                  var promise = false;
                  $('.modesssssllll').click(() => {
                     var URL_CONFIG = {
                        SCENE_CBD: 'http://www.supermapol.com/realspace/services/3D-niaochao/rest/realspace',
                     }
                     promise = this.map.scene.open(URL_CONFIG.SCENE_CBD);
                  })
                  $('.modesssss2222').click(() => {
                     if (promise) {
                        Cesium.when(promise, function (layer) {
                           for (var i = 0; i < layer.length; i++) {
                              that.map.scene.layers.remove(layer[i].name)
                           }
                        })
                     }
                  })
               } else {
                  that.beginSpatialAnalysis(domHtmls);
               }
               isit = !isit;
            })
         },
         promise: 'NODATA',
         beginSpatialAnalysis: function (domHtmls) {
            var that = this;
            var domHtmls = domHtmls;
            var dom = $('#spatialAnalysis-mains');
            dom.empty();
            var str = '<ul>';
            for (var k in domHtmls) {
               str += `<li class="${domHtmls[k].classs}">
                <i class="imgs">
@@ -56,129 +214,423 @@
                <span>${domHtmls[k].name}</span>
                </li>`
            }
            dom.replaceWith(str);
            str += '</ul>';
            dom.append(str);
            // console.log(dom, str)
            // dom.replaceWith(str);
            $('.closesspatialAnalysis').click(() => {
               that.closeOnceUse();
               $('.jimu-widget-spatialAnalysis').hide();
               // 关闭可视
               topic.publish('closev', '');
               // 关闭剖面
               topic.publish('closep', '');
               // 关闭坡度
               topic.publish('closes', '');
               $(".jimu-widget-visibleArea").hide();
               $(".jimu-widget-profileAnalysis").hide();
               $(".jimu-widget-slope").hide();
            })
            })
            // 可视分析
            $('.visibleArea-tool').click(function () {
               that.map.scene.globe.depthTestAgainstTerrain = true;
               // 关闭量算
               topic.publish('closeMeasurement', 'Measurement');
               // 关闭卷帘
               topic.publish('closeRolling', 'Rolling');
               // 关闭分屏
               topic.publish('closeSplitScreen', 'SplitScreen');
               // 关闭标记
               topic.publish('closeSign', 'Sign');
               topic.publish('closeFlyRoute', 'FlyRoute');
               $('.jimu-widget-CoorPosition').hide();
               $('.jimu-widget-MapPrinting').hide();
               // 关闭可视
               // topic.publish('closev', '');
               // 关闭剖面
               topic.publish('closep', '');
               // 关闭坡度
               topic.publish('closes', '');
               $(".jimu-widget-profileAnalysis").hide();
               $(".jimu-widget-slope").hide();
               $('.tool-y-box').stop().hide();
               that.closeOnceUse();
               $(".jimu-widget-visibleArea").show();
            })
            // 剖面分析
            $('.profileAnalysis-tool').click(function () {
               that.map.scene.globe.depthTestAgainstTerrain = true;
               // 关闭量算
               topic.publish('closeMeasurement', 'Measurement');
               // 关闭卷帘
               topic.publish('closeRolling', 'Rolling');
               // 关闭分屏
               topic.publish('closeSplitScreen', 'SplitScreen');
               // 关闭标记
               topic.publish('closeSign', 'Sign');
               topic.publish('closeFlyRoute', 'FlyRoute');
               $('.jimu-widget-CoorPosition').hide();
               $('.jimu-widget-MapPrinting').hide();
               // 关闭可视
               topic.publish('closev', '');
               // 关闭剖面
               // topic.publish('closep', '');
               // 关闭坡度
               topic.publish('closes', '');
               $(".jimu-widget-visibleArea").hide();
               $(".jimu-widget-slope").hide();
               $('.tool-y-box').stop().hide();
               that.closeOnceUse();
               $(".jimu-widget-profileAnalysis").show();
            })
            //坡度分析
            $('.slope-tool').click(function () {
               that.map.scene.globe.depthTestAgainstTerrain = true;
               // 关闭量算
               topic.publish('closeMeasurement', 'Measurement');
               // 关闭卷帘
               topic.publish('closeRolling', 'Rolling');
               // 关闭分屏
               topic.publish('closeSplitScreen', 'SplitScreen');
               // 关闭标记
               topic.publish('closeSign', 'Sign');
               topic.publish('closeFlyRoute', 'FlyRoute');
               $('.jimu-widget-CoorPosition').hide();
               $('.jimu-widget-MapPrinting').hide();
               // 关闭可视
               topic.publish('closev', '');
               // 关闭剖面
               topic.publish ('closep', '');
               // 关闭坡度
               // topic.publish('closes', '');
               $(".jimu-widget-visibleArea").hide();
               $(".jimu-widget-profileAnalysis").hide();
               $('.tool-y-box').stop().hide();
               that.closeOnceUse();
               $(".jimu-widget-slope").show();
               topic.publish('getbeginSlope', this.beginSlope);
               topic.publish('getbeginSlope', 'this.beginSlope');
            })
            //模型
            $('.modelDiagram-tool').click(function () {
               that.closeOnceUse();
               $('.jimu-widget-modelDiagram').show();
            })
            //sql查询
            $('.SQLQuery-tool').click(function () {
               that.closeOnceUse();
               $(".jimu-widget-SQLQuery").show();
               topic.publish('beginSQL', 'this.beginSQL');
            })
            //地形开挖
            $('.digTheEarth-tool').click(function () {
               that.closeOnceUse('digTheEarth');
               $(".jimu-widget-digTheEarth").show();
               // topic.publish('beginDigTheEarth', 'beginDigTheEarth');
            })
         },
            //方量分析
            $('.volumeAnalysis-tool').click(function () {
               that.closeOnceUse('volumeAnalysis');
               $(".jimu-widget-volumeAnalysis").show();
               topic.publish('beginVolumeAnalysis', 'beginVolumeAnalysis');
            })
            //空间查询
            $('.spatialQuery-tool').click(function () {
               that.closeOnceUse();
               $(".jimu-widget-spatialQuery").show();
               topic.publish('beginSpatialQuery', 'beginSpatialQuery');
            })
            //多边形裁剪
            $('.polygonClipping-tool').click(function () {
               that.closeOnceUse();
               $(".jimu-widget-polygonClipping").show();
               topic.publish('beginpolygonClipping', 'beginpolygonClipping');
            })
            //通视分析
            $('.throughSee-tool').click(function () {
               that.closeOnceUse();
               $(".jimu-widget-throughSee").show();
               topic.publish('beginthroughSee', 'beginthroughSee');
            })
            //平面裁剪
            $('.clippingPlanes-tool').click(function () {
               that.closeOnceUse();
               // console.log(that.promise, 22222222222)
               if (that.promise == 'NODATA') {
                  layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
                     tips: [3, 'red']
                  });
               } else {
                  $(".jimu-widget-clippingPlanes").show();
                  topic.publish('beginclippingPlanes', that.promise);
               }
            })
            //BOX裁剪
            $('.BOXTailoring-tool').click(function () {
               that.closeOnceUse();
               if (that.promise == 'NODATA') {
                  layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
                     tips: [3, 'red']
                  });
               } else {
                  $(".jimu-widget-BOXTailoring").show();
                  topic.publish('beginBOXTailoring', that.promise);
               }
            })
            //Cross裁剪
            $('.crossTailoring-tool').click(function () {
               that.closeOnceUse();
               if (that.promise == 'NODATA') {
                  layer.tips('请选择三维倾斜数据中的图层支持!', '.SelectLayerTool', {
                     tips: [3, 'red']
                  });
               } else {
                  $(".jimu-widget-crossTailoring").show();
                  topic.publish('begincrossTailoring', that.promise);
               }
            })
            $('.SelectLayerTool').click(() => {
               $('#SelectLayerToolItem').toggle();
            })
            //参照Layemanagement
            topic.subscribe("appendItemS", lang.hitch(this, this.appendItemS));
            topic.subscribe("removeItemS", lang.hitch(this, this.removeItemS));
            topic.subscribe("appendTiltS", lang.hitch(this, this.appendTiltS));
            topic.subscribe("removeTiltS", lang.hitch(this, this.removeTiltS));
            this.liClick('默认:天地图影像', '默认:天地图影像');
         },
         morenliClick: function (itemid, name) {
            var dom = $('.SelectLayerTool');
            dom.empty();
            var str = `${name} <i class="layui-icon layui-icon-down layui-font-12"></i>`
            dom.append(str);
            // console.log('数据错误默认')
            this.promise = 'NODATA';
            this.SelectClose();//关闭需要三维数据的窗口
         },
         SelectClose: function () {
            //关闭平面裁剪
            if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-clippingPlanes").hide();
               topic.publish('closesclippingPlanes');
            }
            //关闭BOX裁剪
            if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-BOXTailoring").hide();
               topic.publish('closesBOXTailoring');
            }
            //关闭Cross裁剪
            if ($(".jimu-widget-crossTailoring").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-crossTailoring").hide();
               topic.publish('closescrossTailoring');
            }
         },
         liClick: function (itemid, name, ourdata = 1) {//点击事件
            var that = this;
            var liList = $(`[itemid='${itemid}s']`);
            // console.log(liList);
            liList.click(() => {
               // console.log(itemid)
               var dom = $('.SelectLayerTool');
               layer.tips('选择了:' + name, dom, { tips: [1, '#5FB878'] });
               dom.empty();
               var str = `${name} <i class="layui-icon layui-icon-down layui-font-12"></i>`
               dom.append(str);
               dom.attr("title", name);
               $('#SelectLayerToolItem').hide();
               // console.log(ourdata);
               // 定位
               // console.log(name)
               if (ourdata != 1) {
                  //    console.log('data')
                  if (ourdata.lon) {
                     //设置相机位置、视角,便于观察场景
                     that.map.scene.camera.setView({
                        destination: new Cesium.Cartesian3.fromDegrees(Number(ourdata.lon), Number(ourdata.lat), Number(ourdata.height)),
                        orientation: {
                           heading: Cesium.Math.toRadians(Number(ourdata.yawAngle)),
                           pitch: Cesium.Math.toRadians(Number(ourdata.pitchAngle)),
                           roll: Cesium.Math.toRadians(Number(ourdata.rollAngle))
                        }
                     });
                     // console.log(ourdata.lon)
                     // console.log(ourdata.lat)
                     // console.log(ourdata.height)
                     // console.log(ourdata.yawAngle)
                     // console.log(ourdata.pitchAngle)
                     // console.log(ourdata.rollAngle)
                     //115.996858
                     //29.170348
                     //232.99
                     //84.10
                     //-22.98
                     //360.00
                  }
                  if (ourdata.src.indexOf('.openrealspace') != -1) {
                     // console.log('数据正确');
                     this.SelectClose();//关闭需要三维数据的窗口
                     that.promise = {
                        src: ourdata.src,
                        ZName: ourdata.title,
                        name: ourdata.serviceName,
                        id: ourdata.id
                     };
                  } else {
                     // console.log('数据错误');
                     that.promise = 'NODATA';
                     this.SelectClose();//关闭需要三维数据的窗口
                  }
               } else {
                  // console.log('数据错误没有data');
                  that.promise = 'NODATA';
                  //关闭平面裁剪
                  this.SelectClose();//关闭需要三维数据的窗口
               }
            })
         },
         appendItemS: function (item, obj, layer) {
            // console.log('a1')
            var that = this;
            if (item == this.name) {
               // $("#SelectLayerToolItemTitle .no-data").stop().hide();
               var flag = true;
               var liList = $("#SelectLayerToolItemTitle li");
               // console.log(liList)
               // console.log($('#SelectLayerToolItemTitle'))
               for (var i = 0; i < liList.length; i++) {
                  if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
                     flag = false
                  }
               }
               if (flag == true) {
                  var liItem = $("<li itemid='" + obj.id + "s' itemtitle='" + obj.title + "'> <div>" +
                     "<span title='" + obj.title + "'>" +
                     obj.title +
                     "</span>" +
                     "</div> </li>");
                  that[obj.id] = layer;
                  $("#SelectLayerToolItemTitle").append(liItem);
               }
               that.liClick(obj.id, obj.title, obj);
            }
         },
         removeItemS: function (item, obj) {
            // console.log(obj, 'r1')
            var that = this;
            if (item == this.name) {
               var liList = $("#SelectLayerToolItemTitle li");
               for (var i = 0; i < liList.length; i++) {
                  if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
                     $(liList[i]).remove();
                     var dom = $('.SelectLayerTool').attr("title");
                     // console.log(dom == obj.title, this.liClick)
                     if (dom == obj.title) {
                        that.morenliClick('默认:天地图影像', '默认:天地图影像');
                        that.promise = 'NODATA';
                     }
                  }
               }
               if ($("#SelectLayerToolItemTitle li").length == 1 && $("#SelectLayerToolItemTitle li").length == 0) {
                  $("#SelectLayerToolItemTitle .no-data").stop().show();
                  $(".jimu-widget-spatialAnalysis .tree-layer-opcity").stop().hide();
               }
            }
            // this.liClick();
         },
         appendTiltS: function (item, obj, layer) {
            // console.log('a2')
            var that = this;
            if (item == this.name) {
               // $("#SelectLayerToolItemTitle .no-data").stop().hide();
               var flag = true;
               var liList = $("#SelectLayerToolItemTitle li");
               for (var i = 0; i < liList.length; i++) {
                  if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
                     flag = false
                  }
               }
               if (flag == true) {
                  var liItem = $("<li itemid='" + obj.id + "s' itemtitle='" + obj.title + "'> <div>" +
                     "<span title='" + obj.title + "'>" +
                     obj.title +
                     "</span>" +
                     "</div> </li>");
                  $("#SelectLayerToolItemTitle").append(liItem);
               }
               that.liClick(obj.id, obj.title, obj);
            }
         },
         removeTiltS: function (item, obj) {
            // console.log(obj, 'r2')
            // console.log('r2')
            var that = this;
            if (item == this.name) {
               var liList = $("#SelectLayerToolItemTitle li");
               for (var i = 0; i < liList.length; i++) {
                  if ($(liList[i]).attr('itemid') && $(liList[i]).attr('itemid') == obj.id + 's') {
                     $(liList[i]).remove();
                     var dom = $('.SelectLayerTool').attr("title");
                     if (dom == obj.title) {
                        that.morenliClick('默认:天地图影像', '默认:天地图影像');
                        that.promise = 'NODATA';
                     }
                  }
               }
               if ($("#SelectLayerToolItemTitle li").length == 1 && $("#SelectLayerToolItemTitle li").length == 0) {
                  // $("#SelectLayerToolItemTitle .no-data").stop().show();
                  // $(".jimu-widget-spatialAnalysis .tree-layer-opcity").stop().hide();
               }
            }
         },
         closeToolBox: function (item) {
            if (item != this.name) {
               $('.tool-y-box').hide();
            }
         },
         closeOnceUse: function (who) {
            var that = this;
            that.map.scene.globe.depthTestAgainstTerrain = true;
            // 关闭量算
            topic.publish('closeMeasurement', 'Measurement');
            // 关闭卷帘
            topic.publish('closeRolling', 'Rolling');
            // 关闭分屏
            topic.publish('closeSplitScreen', 'SplitScreen');
            // 关闭标记
            topic.publish('closeSign', 'Sign');
            topic.publish('closeFlyRoute', 'FlyRoute');
            $('.jimu-widget-CoorPosition').hide();
            $('.jimu-widget-MapPrinting').hide();
            // 关闭可视
            topic.publish('closev', '');
            // 关闭剖面
            topic.publish('closep', '');
            // 关闭坡度
            topic.publish('closes', '');
            $(".jimu-widget-visibleArea").hide();
            $(".jimu-widget-profileAnalysis").hide();
            $(".jimu-widget-slope").hide();
            $('.tool-y-box').stop().hide();
            //关闭飞行
            $('.jimu-widget-visualAngle').find('.v-a-Two').removeClass('on');//清楚样式
            topic.publish('closeFly', 'closeFly');
            //清除实体
            this.map.entities.removeAll();
            $(".jimu-widget-modelDiagram").hide();
            //清除SQL查询
            $(".jimu-widget-SQLQuery").hide();
            topic.publish('closesSQL', 'closesSQL');
            //关闭地形开挖
            if ($(".jimu-widget-digTheEarth").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-digTheEarth").hide();
               topic.publish('closesDigTheEarth');
            }
            //关闭方量贩分析
            if ($(".jimu-widget-volumeAnalysis").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-volumeAnalysis").hide();
               topic.publish('closesVolumeAnalysis');
            }
            //关闭空间查询
            if ($(".jimu-widget-spatialQuery").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-spatialQuery").hide();
               topic.publish('closesSpatialQuery');
            }
            //关闭多边形裁剪
            if ($(".jimu-widget-polygonClipping").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-polygonClipping").hide();
               topic.publish('closespolygonClipping');
            }
            //关闭通视分析
            if ($(".jimu-widget-throughSee").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-throughSee").hide();
               topic.publish('closesthroughSee');
            }
            //关闭平面裁剪
            if ($(".jimu-widget-clippingPlanes").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-clippingPlanes").hide();
               topic.publish('closesclippingPlanes');
            }
            //关闭BOX裁剪
            if ($(".jimu-widget-BOXTailoring").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-BOXTailoring").hide();
               topic.publish('closesBOXTailoring');
            }
            //关闭Cross裁剪
            if ($(".jimu-widget-crossTailoring").is(":visible")) {//判断是否隐藏
               $(".jimu-widget-crossTailoring").hide();
               topic.publish('closescrossTailoring');
            }
         },
         onOpen: function () {
            //面板打开的时候触发 (when open this panel trigger)
            // var domHtmls = [
            //    {
            //       name: '可视分析',
            //       classs: 'visibleArea-tool'
            //    }, {
            //       name: '剖面分析',
            //       classs: 'profileAnalysis-tool'
            //    }, {
            //       name: '坡度分析',
            //       classs: 'slope-tool'
            //    },
            // ];
            // var dom = $('#spatialAnalysis-main');
            // var str = '';
            // for (var k in domHtmls) {
            //    str += `<li class="${domHtmls[k].classs}"><i></i> <span>${domHtmls[k].name}</span></li>`
            // }
            // dom.replaceWith(str);
         },
         onClose: function () {