管道基础大数据平台系统开发-【前端】-新系統界面
1
13693261870
2023-05-23 369d44cc36c599b5ad9d66d78a8d4a18d4575e7a
1
已修改1个文件
545 ■■■■■ 文件已修改
src/views/Tools/LayerTree.vue 545 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue
@@ -180,7 +180,7 @@
      }
      let checkKey = [], checkedLayers = [];
      var layers = data.result.filter((lyr) => {
      let layers = data.result.filter((lyr) => {
        if (lyr.url && lyr.type == 2 && lyr.isShow == 1) {
          checkKey.push(lyr.id);
          if (lyr.serveType == "WMS") checkedLayers.push(lyr);
@@ -247,7 +247,7 @@
    showLayerAttribute (data) {
      this.rmListener();
      this.currentData = data ? data : this.currentData;
      var layer = this.currentData.enName.replaceAll("_", "");
      let layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      this.$store.state.showPopBoxFlag = true;
      this.$store.state.mapPopBoxFlag = "2";
@@ -256,7 +256,7 @@
    async positioning () {
      this.rmListener();
      if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) {
        for (var i in Viewer.scene.primitives._primitives) {
        for (let i in Viewer.scene.primitives._primitives) {
          if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) {
            Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
            break;
@@ -266,10 +266,10 @@
      }
      if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) {
        var data = await comprehensive_selectPubById({ id: this.currentData.pubid });
        let data = await comprehensive_selectPubById({ id: this.currentData.pubid });
        if (data.result && data.result.geom) {
          var wkt = this.$wkt.parse(data.result.geom);
          var height = this.getHeight(wkt.coordinates[2]);
          let wkt = this.$wkt.parse(data.result.geom);
          let height = this.getHeight(wkt.coordinates[2]);
          Viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), // 2000
          });
@@ -284,7 +284,7 @@
    // 钻孔柱状图
    async histogram () {
      this.rmListener();
      var layer = this.currentData.enName.replaceAll("_", "");
      let layer = this.currentData.enName.replaceAll("_", "");
      this.$store.state.mapSpaceQueryLayer = layer;
      this.$store.state.mapPopBoxFlag = "2";
      this.$store.state.showPopBoxFlag = true;
@@ -292,7 +292,7 @@
    // 透明度
    pellucidity () {
      this.rmListener();
      for (var j in Viewer.scene.primitives._primitives) {
      for (let j in Viewer.scene.primitives._primitives) {
        if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) {
          this.$store.state.setAlphaDity = this.currentData;
          this.$bus.$emit("showPellucidity", true);
@@ -346,7 +346,7 @@
    getNodes (data, arr) {
      if (data.children) {
        for (let i = 0, c = data.children.length; i < c; i++) {
          var node = data.children[i];
          let node = data.children[i];
          if (node.children) {
            this.getNodes(node, arr)
          } else {
@@ -359,10 +359,9 @@
    },
    // 获取节点ID
    getCheckNodesIds () {
      var nodes = this.$refs.tree.getCheckedNodes();
      var ids = [];
      for (var i in nodes) {
      let nodes = this.$refs.tree.getCheckedNodes();
      let ids = [];
      for (let i in nodes) {
        ids.push(nodes[i].id);
      }
@@ -370,28 +369,28 @@
    },
    // 切换WMS服务
    setChangeWMS (layers, checked) {
      var value = this.$refs.tree.getCheckedNodes();
      let value = this.$refs.tree.getCheckedNodes();
      this.$bus.$emit("showMenuLayer", value);
    },
    // 切换Tileset
    setChangeTileset (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (var i in layers) {
        var layer = layers[i];
      for (let k in layers) {
        let layer = layers[k];
        if (ids.indexOf(layer.id) > -1) {
          arr.push(layer);
          continue;
        }
        for (var j in Viewer.scene.primitives._primitives) {
        for (let j in Viewer.scene.primitives._primitives) {
          if (Viewer.scene.primitives._primitives[j].id == layer.cnName) {
            Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]);
            break;
          }
        }
        var list = this.$store.state.setAlphaList;
        for (var i = 0; i < list.length; i++) {
        let list = this.$store.state.setAlphaList;
        for (let i = 0; i < list.length; i++) {
          if (list[i].name == layer.cnName) {
            list.splice(i, 1);
          }
@@ -402,19 +401,69 @@
    },
    // 添加Tileset图层
    addTilesetLayers (layers) {
      //
      for (let i in layers) {
        let res = layers[i];
        let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url;
        let tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            url: url,
            skipLevelOfDetail: true, // 在遍历时候跳过详情:false
            baseScreenSpaceError: 1024,
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16,数值加大能让最终成像变模糊
            skipScreenSpaceErrorFactor: 16,
            skipLevels: 1,
            immediatelyLoadDesiredLevelOfDetail: false,
            loadSiblings: true, // 自动从中心开始超清化模型:false
            cullWithChildrenBounds: true, // 使用子项边界体积的并集来剔除图块:true
            cullRequestsWhileMoving: true,
            cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除:60
            preloadWhenHidden: true,
            preferLeaves: true, // 预装子节点:false
            maximumMemoryUsage: 512, // 内存分配变小有利于内存回收,提升性能体验
            progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊
            dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
            dynamicScreenSpaceErrorFactor: 2, // 动态屏幕空间误差的系数
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false,全屏加载完之后才清晰化房屋
          })
        );
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.serveType != '3DML') {
            // Cesium.Matrix4.equals(a,b) 判断矩阵是否相等,整个根节点模型矩阵,该tileSet=>世界坐标系,单位矩阵对角线值为1.0的4*4矩阵
            if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
              // 获取模型的世界坐标(笛卡尔),Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标
              const transformCenter = Cesium.Matrix4.getTranslation(tileset.root.transform, new Cesium.Cartesian3());
              // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的)
              const transformCartographic = Cesium.Cartographic.fromCartesian(transformCenter);
              // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的)
              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
              const height = boundingSphereCartographic.height - transformCartographic.height;
              // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的)
              window.modelHeight = height;
            } else {
              window.modelHeight = 0;
            }
            this.setTilesetArgs(tileset, res);
          }
        });
      }
    },
    // 切换TMS
    setChangeTMS (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (var i in layers) {
        var layer = layers[i];
      for (let j in layers) {
        let layer = layers[j];
        if (ids.indexOf(layer.id) > -1) {
          arr.push(layer);
          continue;
        }
        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
        for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
          if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) {
            window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]);
            break;
@@ -424,21 +473,37 @@
      if (arr.length) this.addTMSLayers(arr);
    },
    // 添加Tile图层
    // 添加TMS图层
    addTMSLayers (layers) {
      //
      let url = res.url;
      if (res.url.indexOf("{host}") != -1) {
        url = res.url.replace("{host}", iisHost);
      }
      if (res.pubid) {
        this.setQueryPubid(res);
      } else {
        let layer = Viewer.imageryLayers.addImageryProvider(
          new Cesium.UrlTemplateImageryProvider({
            url: url,
            maximumLevel: 22,
          })
        );
        layer.name = res.cnName;
        this.setChangeWMS();
      }
    },
    // 切换Mpt
    setChangeMpt (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [];
      for (var i in layers) {
        var layer = layers[i];
      for (let j in layers) {
        let layer = layers[j];
        if (ids.indexOf(layer.id) != -1) {
          arr.push(layer);
          continue;
        }
        for (var i in this.mptLayer) {
        for (let i in this.mptLayer) {
          if (this.mptLayer[i].treeobj.name == layer.cnName) {
            this.mptLayer[i].deleteObject();
            this.mptLayer.splice(i, 1);
@@ -450,229 +515,100 @@
    },
    // 添加Mpt图层
    addMptLayers (layers) {
      //
      if (res.url.indexOf("{host}") != -1) {
        res.url = res.url.replace("{host}", iisHost);
      }
      let url = res.url.split(';')
      let layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
        url: url[0],
        layers: url[1]
      }, "0", undefined, true, "");
      this.mptLayer.push(layer)
      setTimeout(() => {
        this.setChangeWMS();
      }, 500);
    },
    // 切换DEM
    setChangeDEM (layers, checked) {
      let ids = this.getCheckNodesIds(), arr = [], isDel = false;
      for (var i in layers) {
        var layer = layers[i];
      let ids = this.getCheckNodesIds(), arr = [], isDel = false, useSG = false;
      for (let i in layers) {
        let layer = layers[i];
        if (ids.indexOf(layer.id) != -1) {
          arr.push(layer.url);
          continue;
        }
        // 删除DEM
        if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) {
          isDel = true;
        }
        if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) isDel = true; // 删除DEM
      }
      if (!arr.length && isDel) arr.push(demLayer);
      if (arr.length) this.addDEMLayers(arr[0]);
      if (!arr.length && isDel) useSG = true; // demLayer
      if (arr.length) this.addDEMLayers(arr[0], useSG);
    },
    // 添加DEM图层
    addDEMLayer (url) {
      Viewer.terrainLayer = new Cesium.CesiumTerrainProvider({
        url: url,
        requestVertexNormals: true
      });
    },
    async setAddLayers (res) {
      if (res.serveType == "WMS") {
        var resource = geoServerURl;
        if (res.resource != null && res.resource != undefined) {
          resource = res.resource;
        }
        var imageryLayers = window.Viewer.scene.imageryLayers;
        let layerWMS = new Cesium.WebMapServiceImageryProvider({
          url: resource,
          layers: res.url,
          parameters: {
            transparent: true,
            format: "image/png",
            srs: "EPSG:4490",
            styles: "",
          },
          tileWidth: 512,
          tileHeight: 512,
        });
        layerWMS.name = res.cnName;
        //透明度
        var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
        if (res.opacity) {
          tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
        }
        var layer2 = new Image({
          name: res.cnName,
          source: new ImageWMS({
            crossOrigin: "anonymous",
            url: resource,
            params: {
              FORMAT: "image/png",
              VERSION: "1.1.1",
              LAYERS: res.url,
            },
          }),
        });
        if (res.opacity) {
          layer2.setOpacity(parseInt(res.opacity) / 100);
        }
        window.map.addLayer(layer2);
      } else if (res.serveType == "WFS") {
        var url =
          res.resource +
          "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
          res.url +
          "&outputFormat=application%2Fjson";
        $.ajax({
          url: url,
          cache: false,
          async: true,
          success: function (data) {
            var datasource = Cesium.GeoJsonDataSource.load(data, {
              stroke: Cesium.Color.YELLOW,
              fill: Cesium.Color.YELLOW.withAlpha(0.1),
              alpha: 0.1,
              strokeWidth: 8,
              clampToGround: true, //是否贴地
            });
            datasource.then((data) => {
              data.name = res.cnName;
              window.Viewer.dataSources.add(data);
            });
          },
          error: function (data) {
            console.log("error");
          },
        });
        var vectorLayer = new VectorLayer({
          name: res.cnName,
          source: new VectorSource({
            url: url,
            format: new GeoJSON(),
          }),
        });
        window.map.addLayer(vectorLayer);
      } else if (res.serveType == "Tileset" || res.serveType == "3DML") {
        var url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        } else {
          url = modelUrl + "/" + res.url
        }
        var tileset = Viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            name: res.cnName,
            url: url, //192.168.20.106,to4
            maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
            maximumMemoryUsage: 768, // 最大内存:512
            dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
            skipLevelOfDetail: true, // 在遍历时候跳过详情:false
          })
        );
        tileset.readyPromise.then((tileset) => {
          tileset.id = res.cnName;
          tileset.layerId = res.id;
          tileset.pubid = res.pubid;
          if (res.serveType != '3DML') {
            // Cesium.Matrix4.equals(a,b)判断两个四维矩阵是否相等
            // 整个根节点模型矩阵,该tileSet=>世界坐标系
            // 单位矩阵,对角线值为1.0的4*4矩阵
            if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
              // 获取模型的世界坐标(笛卡尔)
              // Cesium.Matrix4.getTranslation 通过仿射变换矩阵获取该tileSet的世界坐标
              const transformCenter = Cesium.Matrix4.getTranslation(
                tileset.root.transform,
                new Cesium.Cartesian3()
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(模型的)
              const transformCartographic = Cesium.Cartographic.fromCartesian(
                transformCenter
              );
              // 将笛卡尔坐标转换为WGS84经纬度坐标(截面的)
              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(
                tileset.boundingSphere.center
              );
              const height = boundingSphereCartographic.height - transformCartographic.height;
              // 从一个Cartesian3对象生成Matrix4变换矩阵(裁切面的)
              window.modelHeight = height;
            } else window.modelHeight = 0;
            this.getTilesetArgs(tileset, res);
          }
        });
        this.$store.state.setAlphaList.push({
          name: res.cnName,
          alpha: 1
        })
        window.model = tileset
      } else if (res.serveType == "TMS") {
        var url = res.url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        }
        if (res.pubid) {
          this.setQueryPubid(res);
        } else {
          var layer = Viewer.imageryLayers.addImageryProvider(
            new Cesium.UrlTemplateImageryProvider({
              url: url,
              maximumLevel: 22,
            })
          );
          layer.name = res.cnName;
          this.setChangeWMS();
        }
      } else if (res.serveType == "Mpt") {
        if (res.url.indexOf("{host}") != -1) {
          res.url = res.url.replace("{host}", iisHost);
        }
        var url = res.url.split(';')
        var layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
          url: url[0],
          layers: url[1]
        }, "0", undefined, true, "");
        this.mptLayer.push(layer)
        setTimeout(() => {
          this.setChangeWMS();
        }, 500);
      }
    },
    async getTilesetArgs (tileset, res) {
      if (res.pubid > 0) {
        const data = await comprehensive_selectPubById({ id: res.pubid })
        if (data.code != 200) {
          //
        } else {
          if (res.serveType != '3DML') {
            this.reload(tileset, data.result.json)
          } else {
            this.tileSet(tileset, parseFloat(res.elev))
          }
        }
    addDEMLayer (url, useSG) {
      if (useSG) {
        let option = {
          url: window.sceneConfig.SGUrl,
          layerName: window.sceneConfig.mptName,
          requestVertexNormals: true
        };
        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      } else {
        this.tileSet(tileset, parseFloat(res.elev))
        window.terrainLayer = new Cesium.CesiumTerrainProvider({
          url: url,
          requestVertexNormals: true
        });
      }
      Viewer.terrainProvider = terrainLayer;
    },
    // 设置Tileset参数
    async setTilesetArgs (tileset, res) {
      if (res.serveType == '3DML' || !res.pubid) {
        this.setTilesetHeigth(tileset, parseFloat(res.elev));
        return;
      }
      const data = await comprehensive_selectPubById({ id: res.pubid })
      if (data.code == 200) this.setTilesetCoord(tileset, data.result.json);
    },
    // 设置Tileset高度
    setTilesetHeigth (tileset, height) {
      //3dtile模型的边界球体
      let boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
      let cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
      //地理坐标(弧度制)=>迪卡尔空间直角坐标
      let Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
      let Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
      //获得地面和offset的转换
      let translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
      //修改模型矩阵
      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
      // Viewer.flyTo(tileset);
    },
    // 设置Tileset坐标
    setTilesetCoord (tileset, json) {
      let vm = JSON.parse(json);
      let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      let converter = Cesium.Transforms.eastNorthUpToFixedFrame;
      let hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
      let matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
      tileset._root.transform = matrix;
      // Viewer.flyTo(tileset);
    },
    async setQueryPubid (res) {
      const data = await comprehensive_selectPubById({ id: res.pubid })
      if (data.code != 200) {
        //
      } else {
        var url = data.result.url;
        let url = data.result.url;
        if (res.url.indexOf("{host}") != -1) {
          url = res.url.replace("{host}", iisHost);
        }
        var min = data.result.min;
        var max = data.result.max;
        var layer;
        let min = data.result.min;
        let max = data.result.max;
        let layer;
        if (max > 0) {
          layer = Viewer.imageryLayers.addImageryProvider(
            new Cesium.UrlTemplateImageryProvider({
@@ -692,7 +628,7 @@
        layer.name = res.cnName;
        if (data.result.geom) {
          // var wkt = this.$wkt.parse(data.result.geom);
          // let wkt = this.$wkt.parse(data.result.geom);
          // Viewer.camera.flyTo({
          //   destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
          // });
@@ -700,46 +636,23 @@
        this.setChangeWMS();
      }
    },
    reload (tileset, res) {
      var vm = JSON.parse(res)
      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
      tileset._root.transform = matrix;
      // Viewer.flyTo(tileset);
    },
    tileSet (tileset, height) {
      //3dtile模型的边界球体
      var boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
      //地理坐标(弧度制)=>迪卡尔空间直角坐标
      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
      //获得地面和offset的转换
      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
      //修改模型矩阵
      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
      // Viewer.flyTo(tileset);
    },
    async setproChange (res) {
      if (res) {
        this.setCheeckedLayer = this.$refs.tree.getCheckedKeys();
        this.$store.state.pigCode = res;
        var st_code = this.optionts.filter(rs => {
        let st_code = this.optionts.filter(rs => {
          if (rs.code == res) {
            return rs
          }
        })
        var val = this.$store.state.oldTree.filter(rs => {
        let val = this.$store.state.oldTree.filter(rs => {
          if (rs.enName == st_code[0].code) {
            return rs
          }
        })
        this.removeAllLayer();
        var obj = {
        let obj = {
          dirid: res,
          pageIndex: 1,
          pageSize: 10,
@@ -752,29 +665,29 @@
        }
        if (data.result[0]) {
          var geom = data.result[0].geom
          let geom = data.result[0].geom
          if (geom) {
            var wkt = this.$wkt.parse(geom)
            let wkt = this.$wkt.parse(geom)
            Viewer.camera.flyTo({
              destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000),
            });
          }
        }
        this.cannelTerrainLayer();
        this.setTerrainMptLayer();
        //this.cannelTerrainLayer();
        //this.setTerrainMptLayer();
        //清空图层树选中状态
        this.$refs.tree.setCheckedKeys([]);
        if (val.length > 0) {
          if (val[0].type == 1 && val[0].isProject == 1) {//项目分类
            var std_check = [];
            for (var i in val) {
              var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], [])
              for (var j in std_val) {
            let std_check = [];
            for (let i in val) {
              let std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], [])
              for (let j in std_val) {
                std_check.push(std_val[j])
              }
            }
            var value = this.$store.state.isProjectLayer;
            for (var i in value) {
            let value = this.$store.state.isProjectLayer;
            for (let i in value) {
              std_check.push(value[i])
            }
@@ -789,50 +702,50 @@
        this.removeAllLayer();
        this.$store.state.pigCode = null;
        this.$refs.tree.setCheckedKeys(this.setCheeckedLayer);
        var std = [];
        for (var i in this.setCheeckedLayer) {
        let std = [];
        for (let i in this.setCheeckedLayer) {
          std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data)
        }
        this.setProjectLayer(std);
      }
    },
    removeAllLayer () {
      for (var j in Viewer.scene.primitives._primitives) {
      for (let j in Viewer.scene.primitives._primitives) {
        Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j])
      }
      for (var i in window.Viewer.dataSources._dataSources) {
      for (let i in window.Viewer.dataSources._dataSources) {
        window.Viewer.dataSources.remove(
          window.Viewer.dataSources._dataSources[i]
        );
      }
      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
        var val_id = window.Viewer.imageryLayers._layers[i].id;
      for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
        let val_id = window.Viewer.imageryLayers._layers[i].id;
        if (val_id == 'TMS') {
          window.Viewer.imageryLayers.remove(
            window.Viewer.imageryLayers._layers[i]
          );
        }
      }
      for (var i in this.mptLayer) {
      for (let i in this.mptLayer) {
        this.mptLayer[i].deleteObject();
        this.mptLayer.splice(i, 1)
      }
      this.mptLayer = [];
    },
    setProjectLayer (res) {
      var layerid = [];
      for (var i in res) {
        layerid.push(res[i].id)
      let layerid = [];
      for (let j in res) {
        layerid.push(res[j].id)
      }
      this.$refs.tree.setCheckedKeys(layerid);
      // var value = this.$refs.tree.getCheckedNodes();
      // let value = this.$refs.tree.getCheckedNodes();
      // this.$bus.$emit("showMenuLayer", value);
      var listWMS = [];
      var listWFS = [];
      var listTileset = [];
      var listTMS = [];
      var listMpt = [];
      for (var i in res) {
      let listWMS = [];
      let listWFS = [];
      let listTileset = [];
      let listTMS = [];
      let listMpt = [];
      for (let i in res) {
        if (res[i].type == 2) {
          switch (res[i].serveType) {
            case 'WMS':
@@ -871,43 +784,55 @@
      }
      return result
    },
    cannelTerrainLayer () {
      //清空地形
      if (window.terrainMptLayer) {
        window.terrainMptLayer.deleteObject();
        window.terrainMptLayer = null;
      }
      if (window.terrainDemLayer) {
        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
        window.terrainDemLayer = null;
      }
    },
    setTerrainMptLayer () {
      // //默认地形MPT
      // var option = {
      //   url: window.sceneConfig.SGUrl,
      //   layerName: window.sceneConfig.mptName,
      //   requestVertexNormals: true,
      // };
      // window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
      window.terrainDemLayer = new Cesium.CesiumTerrainProvider({
        // url: LFData + '/3d/terrain/dem20230321'
        url: demLayer
      });
      Viewer.terrainProvider = window.terrainDemLayer
    },
    setChangeProLayer () {
      var value = this.$store.state.isProjectLayer;
      let value = this.$store.state.isProjectLayer;
      if (value.length != 0) {
        var std = [];
        for (var i in value) {
        let std = [];
        for (let i in value) {
          std.push(value[i].id)
        }
        this.$refs.tree.setCheckedKeys(std);
        this.$bus.$emit("showMenuLayer", value);
      }
    },
    // 添加WFS图层 *
    addWFSLayers (res) {
      let url =
        res.resource +
        "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
        res.url +
        "&outputFormat=application%2Fjson";
      $.ajax({
        url: url,
        cache: false,
        async: true,
        success: function (data) {
          let datasource = Cesium.GeoJsonDataSource.load(data, {
            stroke: Cesium.Color.YELLOW,
            fill: Cesium.Color.YELLOW.withAlpha(0.1),
            alpha: 0.1,
            strokeWidth: 8,
            clampToGround: true, //是否贴地
          });
          datasource.then((data) => {
            data.name = res.cnName;
            window.Viewer.dataSources.add(data);
          });
        },
        error: function (data) {
          console.log("error");
        },
      });
      let vectorLayer = new VectorLayer({
        name: res.cnName,
        source: new VectorSource({
          url: url,
          format: new GeoJSON(),
        }),
      });
      window.map.addLayer(vectorLayer);
    }
  },
};
</script>