北京经济技术开发区经开区虚拟城市项目-【前端】-Web
lixuliang
2024-09-14 c7187e038c284acc051a439c5eda16582bdb9b7a
src/components/left/leftmenu.vue
@@ -4,28 +4,29 @@
    :class="{ leftmenu: !isShowLeftPanel, leftmenu_active: isShowLeftPanel }"
    class="leftmenustyle"
  >
    <span
      class="closeLeftMenu"
      v-if="isShowLeftPanel"
      @click.stop="hideLeftMenu"
      >×</span
    >
    <span class="closeLeftMenu" v-if="isShowLeftPanel" @click.stop="hideLeftMenu">×</span>
    <img class="openLeftMenu" v-else src="@/assets/img/left/souselist4.png" />
    <div class="layerTreeContainer" v-show="isShowLeftPanel">
      <!-- <el-input
        placeholder="图层名称"
        v-model="filterText"
        size="mini"
      >
      </el-input>-->
      <div class="switchbox">
        <el-radio-group v-model="radio" @change="getright">
          <el-radio :label="1">组织机构</el-radio>
          <el-radio :label="2">业务要素</el-radio>
        </el-radio-group>
        <!-- <div @click="setTreeDataChange(1)">业务</div>
        <div @click="setTreeDataChange(2)">业务</div> -->
        <div @click="setTreeDataChange(2)">业务</div>-->
      </div>
      <hr />
      <!-- <div style="padding: 5px">
        <el-button size="small" @click="setTreeDataChange(1)">图层1</el-button>
        <el-button size="small" @click="setTreeDataChange(2)">图层2</el-button>
      </div> -->
      </div>-->
      <div class="layerTree">
        <el-tree
          :data="treeData"
@@ -37,6 +38,7 @@
          :render-content="renderContent"
          :default-expanded-keys="defaultExpanded"
          @check="check"
          :filter-node-method="filterNode"
        ></el-tree>
      </div>
    </div>
@@ -109,7 +111,7 @@
    value: undefined,
    defaultValue: isColor
      ? getSGColor(xml2json.DefaultValue)
      : xml2json.DefaultValue,
      : xml2json.DefaultValue
  };
  if (xml2json && !xml2json.Class.length) {
@@ -117,11 +119,14 @@
  } else if (xml2json && xml2json.Class.length) {
    let Value = {
      Condition: undefined,
      Value: {},
      Value: {}
    };
    xml2json.Class.forEach((item) => {
    xml2json.Class.forEach(item => {
      let condition = item.Condition.replace(/\"/g, "");
      let eli = condition.replace("<", "").replace(">", "").split("=");
      let eli = condition
        .replace("<", "")
        .replace(">", "")
        .split("=");
      if (!Value.Condition) {
        eli[0] = eli[0].replace("[", "").replace("]", "");
        Value.Condition = eli[0];
@@ -141,12 +146,12 @@
  await axios
    .get(json)
    .then(
      (response) => {
      response => {
        let _data = response.data;
        if (_data && typeof _data === "string") {
          _data = JSON.parse(_data);
        }
        let style = _data.filter((item) => {
        let style = _data.filter(item => {
          return item.LayerName === name;
        });
        if (type === "point") {
@@ -169,7 +174,7 @@
                defaultValue: defaultValue(
                  style.Text.match(/<Value>(\S*)<\/Value>/)[1],
                  style.Text.match(/<DefaultValue>(\S*)<\/DefaultValue>/)[1]
                ),
                )
              },
              scaleMPP: { defaultValue: style.Scale },
              fillColor: {
@@ -177,14 +182,14 @@
                  red: color[0] / 255,
                  green: color[1] / 255,
                  blue: color[2] / 255,
                  alpha: 1,
                },
                  alpha: 1
                }
              },
              scaleByDistance: {
                near: 0,
                nearValue: 1,
                far: 800000000,
                farValue: 1,
                farValue: 1
              },
              minViewingHeight: { defaultValue: "0" },
              font: { defaultValue: style.Text_Size },
@@ -194,8 +199,8 @@
                  red: bgColor[0] / 255,
                  green: bgColor[1] / 255,
                  blue: bgColor[2] / 255,
                  alpha: 1,
                },
                  alpha: 1
                }
              },
              scale: defaultValue(style.TextScale, 1.5),
              backgroundOpacity: { defaultValue: style.Background_Opacity },
@@ -214,12 +219,12 @@
              ),
              outlineWidth: defaultValue(style.outlineWidth, 2),
              horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM
            },
            lineToGround: { defaultValue: style.Line_to_Ground },
            lineToGroundLength: { defaultValue: style.Line_Length },
            lineToGroundColor: {
              defaultValue: { red: 1, green: 1, blue: 1, alpha: 1 },
              defaultValue: { red: 1, green: 1, blue: 1, alpha: 1 }
            },
            altitudeMethod: 0,
            altitudeOffset: { defaultValue: "0" },
@@ -231,7 +236,7 @@
            position_y: data.position_y,
            position_z: data.position_z == 0 ? 10000 : data.position_z,
            urls: data.Server,
            layer: data.ServerName,
            layer: data.ServerName
          };
          if (style.Line_Color) {
            de.label && (de.label.style = Cesium.LabelStyle.FILL_AND_OUTLINE);
@@ -245,10 +250,10 @@
                near: 0,
                nearValue: 1,
                far: 800000000,
                farValue: 1,
                farValue: 1
              },
              minViewingHeight: { defaultValue: "0" },
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM
            };
          }
        } else if (type === "polyline") {
@@ -271,13 +276,13 @@
                red: color[0] / 255,
                green: color[1] / 255,
                blue: color[2] / 255,
                alpha: 1,
                alpha: 1
              },
              lineOpacity: parseInt(defaultValue(style.Line_Opacity, 1)),
              width: parseInt(defaultValue(style.Line_Width, 4)),
              near: style.Near,
              far: style.Far,
              clampToGround: defaultValue(style.clampToGround, true),
              clampToGround: defaultValue(style.clampToGround, true)
            },
            minimumLevel: defaultValue(style.level_min, 0),
            maximumLevel: defaultValue(style.level_max, 22),
@@ -285,7 +290,7 @@
            position_y: data.position_y,
            position_z: data.position_z == 0 ? 10000 : data.position_z,
            urls: data.Server,
            layer: data.ServerName,
            layer: data.ServerName
          };
        } else if (type === "polygon") {
          let data = style[0];
@@ -298,7 +303,7 @@
          de = {
            polygon: {
              outlineColor: {
                defaultValue: style.outlineColor,
                defaultValue: style.outlineColor
              },
              outlineWidth: style.outlineWidth,
              fill: { defaultValue: style.fill.alpha },
@@ -306,10 +311,10 @@
              height: style.height,
              outline: style.outline,
              material: {
                defaultValue: style.fill,
                defaultValue: style.fill
              },
              clampToGround: !style.extrudedHeight ? true : false,
              fromKml: true,
              fromKml: true
            },
            altitudeMethod: 2,
            altitudeOffset: { defaultValue: "0" },
@@ -319,15 +324,15 @@
            position_y: data.position_y,
            position_z: data.position_z == 0 ? 10000 : data.position_z,
            urls: data.Server,
            layer: data.ServerName,
            layer: data.ServerName
          };
        }
      },
      (response) => {
      response => {
        console.log("获取样式配置失败!");
      }
    )
    .catch(function (error) {
    .catch(function(error) {
      console.log(error);
    });
  return de;
@@ -392,10 +397,10 @@
  if (entity.billboard.image && entity.label.text) {
    entity.imageData = {
      horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
      horizontalOrigin: Cesium.HorizontalOrigin.RIGHT
    };
    entity.labelData = {
      horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
      horizontalOrigin: Cesium.HorizontalOrigin.LEFT
    };
  }
@@ -406,7 +411,7 @@
async function getVectorStyleFromSG(treeNode, json) {
  let de;
  await axios.get(json).then((res) => {
  await axios.get(json).then(res => {
    let entitystyle = GetStyleByStyleJson(res.data);
    de = {
@@ -431,7 +436,7 @@
      disableDepthTestDistance: Number.POSITIVE_INFINITY,
      scale: entitystyle.label.scale,
      labelData: entitystyle.labelData,
      imageData: entitystyle.imageData,
      imageData: entitystyle.imageData
    };
  });
  return de;
@@ -445,6 +450,7 @@
  name: "leftmenu",
  data() {
    return {
      filterText: "",
      isShowLeftPanel: false,
      activeName: "first",
      alldisabled: [],
@@ -454,7 +460,7 @@
      radio: 1,
      defaultExpanded: [],
      defaultCheck: [],
      treeChangeFlag: 1,
      treeChangeFlag: 1
    };
  },
  mounted() {
@@ -551,7 +557,7 @@
      this.setChecked("zhianjiankong", false);
    });
    //关闭菜单弹窗
    Bus.$on("closeMenuPop", (data) => {
    Bus.$on("closeMenuPop", data => {
      if (data) {
        this.isShowLeftPanel = false;
      }
@@ -564,8 +570,7 @@
  methods: {
    getLayersData(url) {
      axios.get(url).then(
        (response) => {
          // console.log(response.data);
        response => {
          // 得到默认选中的数据的id
          this.parseJson(response.data.children);
          //场景配置
@@ -573,15 +578,18 @@
          this.setDefaultCheck(response.data);
          this.$nextTick(() => {
            let selectedLayers = this.$refs.tree.getCheckedNodes();
            if (url == "./static/layers2.json") {
              selectedLayers.forEach((e) => {
                this.setVisiable(e, false);
                this.$refs.tree.setChecked(e, false, false);
                // sgworld.ProjectTree.setVisibility(e.id, false);
              });
            // console.log(selectedLayers);
            if (url.includes("layers2")) {
              Bus.$emit("switchImagerLayerClick", "实景模型");
              // selectedLayers.forEach(e => {
              // this.setVisiable(e, false);
              // this.$refs.tree.setChecked(e, false, false);
              // sgworld.ProjectTree.setVisibility(e.id, false);
              // });
            }
            let filterSelectLayers = selectedLayers;
            let filist = filterSelectLayers.filter((p) => {
            let filist = filterSelectLayers.filter(p => {
              return !p.children;
            });
            let legendlist = [];
@@ -598,10 +606,14 @@
            this.$store.commit("selectedLayer", selectedLayers);
          });
        },
        (response) => {
        response => {
          console.log("获取场景配置失败!");
        }
      );
    },
    filterNode(value, treeData) {
      if (!value) return true;
      return treeData.name.indexOf(value) !== -1;
    },
    setTreeDataChange(res) {
      if (this.treeChangeFlag == res) return;
@@ -618,7 +630,7 @@
    },
    clearAllViewerlayer() {
      let layerNode = this.$refs.tree.getCheckedNodes();
      layerNode.forEach((e) => {
      layerNode.forEach(e => {
        this.setVisiable(e, false);
        this.$refs.tree.setChecked(e, false, false);
        // sgworld.ProjectTree.setVisibility(e.id, false);
@@ -654,20 +666,20 @@
        this.$refs.tree.setCheckedKeys(nval);
        let layer = this.$refs.tree.getCheckedNodes();
        if (ovaL) {
          ovaL.forEach((e) => {
          ovaL.forEach(e => {
            sgworld.ProjectTree.setVisibility(e, false);
          });
        }
        layer.forEach((e) => {
        layer.forEach(e => {
          this.handleCheckChange(e, { checkedKeys: [e.id] });
        });
      }
    },
    treeFormatData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
      return cloneData.filter((father) => {
      return cloneData.filter(father => {
        // 循环所有项
        let branchArr = cloneData.filter((child) => father.gid == child.pid); // 对比ID,分别上下级菜单,并返回数据
        let branchArr = cloneData.filter(child => father.gid == child.pid); // 对比ID,分别上下级菜单,并返回数据
        branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值
        return father.pid == 0; // 返回一级菜单
      });
@@ -685,6 +697,9 @@
        window.panoramaHandler = undefined;
      }
      let layerId = [
        "hexinqu0609",
        "2253dhexin01",
        "2253dfeihexin",
        "0CAAD18E",
        "48EB9EB7",
        // "C0698021",
@@ -692,13 +707,13 @@
        "zhianjiankong",
        "heijin2D",
        "shenlan2D",
        "baise2D",
        "baise2D"
      ];
      let layer1 = this.$refs.tree.getCheckedNodes();
      layerId.forEach((e) => {
      layerId.forEach(e => {
        //删除
        if (e != "shijingsanwei") {
          layer1.forEach((v) => {
          layer1.forEach(v => {
            if (v.id == e) {
              this.$refs.tree.setChecked(e, false, false);
              sgworld.ProjectTree.setVisibility(e, false);
@@ -706,7 +721,7 @@
          });
        }
        // 新增
        n.forEach((i) => {
        n.forEach(i => {
          if (e == i) {
            if (i !== "jiejing") {
              this.$refs.tree.setChecked(i, true, true);
@@ -717,13 +732,13 @@
      });
      let layer = this.$refs.tree.getCheckedNodes();
      // 单独写了一个隐藏b3d模型才能隐藏掉
      let even = layer.filter((e) => {
      let even = layer.filter(e => {
        return e.id == "shijingsanwei";
      });
      n.forEach((e) => {
      n.forEach(e => {
        if (e != "shijingsanwei") {
          if (even.length != 0) {
            even[0].children.forEach((v) => {
            even[0].children.forEach(v => {
              this.$refs.tree.setChecked(v.id, false, false);
              sgworld.ProjectTree.setVisibility(v.id, false);
            });
@@ -802,14 +817,14 @@
          if (node._children) {
            if (node.thisView) {
              if (node._children[0].children) {
                node._children[0].children.forEach((item) => {
                node._children[0].children.forEach(item => {
                  this.addTreeData(item);
                });
              } else {
                this.addTreeData(node._children[0]);
              }
            } else {
              node._children.forEach((item) => {
              node._children.forEach(item => {
                this.addTreeData(item);
              });
            }
@@ -819,7 +834,7 @@
        }
      }
      if (node.children && node.children.length) {
        node.children.forEach((item) => {
        node.children.forEach(item => {
          this.ergodicNode(item);
        });
      }
@@ -842,7 +857,7 @@
      //选中之后传给vuex
      let selectedLayers = this.$refs.tree.getCheckedNodes();
      let filterSelectLayers = selectedLayers;
      let filist = filterSelectLayers.filter((p) => {
      let filist = filterSelectLayers.filter(p => {
        return !p.children;
      });
      let legendlist = [];
@@ -878,7 +893,7 @@
        treeNode.checked = !treeNode.checked;
      }
      if (treeNode.children) {
        treeNode.children.forEach((item) => {
        treeNode.children.forEach(item => {
          this.setVisiable(item, treeNode.checked);
        });
        return;
@@ -886,7 +901,7 @@
        if (treeNode.thisView === "ewzj") {
          treeNode._children[0].checked = treeNode.checked;
          if (treeNode._children[0].children) {
            treeNode._children[0].children.forEach((item) => {
            treeNode._children[0].children.forEach(item => {
              item.checked = treeNode.checked;
              this.addTreeData(item);
            });
@@ -904,7 +919,7 @@
          treeNode._children.forEach((item, index) => {
            item.checked = treeNode.checked;
            if (item.children) {
              item.children.forEach((_item) => {
              item.children.forEach(_item => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
@@ -933,7 +948,7 @@
          data.item.show !== undefined &&
          (data.item.show = treeNode.checked);
        if (data.datatype === "particle") {
          data.item.forEach((item) => {
          data.item.forEach(item => {
            item.show = treeNode.checked;
          });
        }
@@ -944,20 +959,20 @@
          treeNode.id.indexOf("---") > -1
        ) {
          var ids = id.split("---");
          ids.forEach((item) => {
          ids.forEach(item => {
            sgworld.ProjectTree.setVisibility(item, treeNode.checked);
          });
        } else {
          sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked);
          var dd = Viewer.dataSources._dataSources.filter((item) => {
          var dd = Viewer.dataSources._dataSources.filter(item => {
            return item.name == treeNode.id;
          });
          if (dd && dd.length > 0) {
            dd[0].show = treeNode.checked;
          }
          //判断勾选的是否为聚合
          var jhdd = clusterItemList.filter((item) => {
          var jhdd = clusterItemList.filter(item => {
            return item.name == treeNode.id;
          });
          if (jhdd && jhdd.length > 0) {
@@ -969,15 +984,15 @@
    props(data) {
      if (data.class === "imageLayer") {
        window.treeObj = {
          rightClickData: data,
          rightClickData: data
        };
        layerOpen("影像", {
          width: 320,
          height: 310,
          url: "./static/html/layerProp.html",
          fn: {
            end: function () {},
          },
            end: function() {}
          }
        });
      } else if (data._children) {
        if (data.thisView === "ewzj") {
@@ -987,9 +1002,9 @@
          for (let i = 1; i < data._children.length; i++) {
            data._children[i].checked = data.checked;
          }
          data._children.forEach((item) => {
          data._children.forEach(item => {
            if (item.children) {
              item.children.forEach((_item) => {
              item.children.forEach(_item => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
@@ -1004,9 +1019,9 @@
          for (let i = 1; i < data._children.length; i++) {
            data._children[i].checked = false;
          }
          data._children.forEach((item) => {
          data._children.forEach(item => {
            if (item.children) {
              item.children.forEach((_item) => {
              item.children.forEach(_item => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
@@ -1037,7 +1052,7 @@
              treeNode.flyTo[1],
              treeNode.flyTo[2],
              treeNode.flyTo[3]
            ),
            )
          });
        } else {
          sgworld.Navigate.flyToPointsInterest({
@@ -1049,8 +1064,8 @@
            orientation: {
              heading: treeNode.flyTo[3],
              pitch: treeNode.flyTo[4],
              roll: treeNode.flyTo[5],
            },
              roll: treeNode.flyTo[5]
            }
          });
        }
        return;
@@ -1131,7 +1146,7 @@
            _data.item.show !== undefined &&
            (_data.item.show = treeNode.checked);
          if (_data.datatype === "particle") {
            _data.item.forEach((item) => {
            _data.item.forEach(item => {
              item.show = treeNode.checked;
            });
          }
@@ -1155,7 +1170,7 @@
              url: treeNode.urls,
              fileExtension: treeNode.img || "png",
              enablePickFeatures: false,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            undefined,
@@ -1182,7 +1197,7 @@
                  treeNode.tileType === "Geo"
                    ? new Cesium.GeographicTilingScheme()
                    : new Cesium.WebMercatorTilingScheme(),
                alpha: treeNode.alpha,
                alpha: treeNode.alpha
              },
              "0",
              treeNode.zIndex,
@@ -1194,9 +1209,8 @@
              treeNode.name,
              {
                id: treeNode.id,
                url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${
                  treeNode.img || "png"
                }`,
                url: `${treeNode.urls}/${treeNode.tile ||
                  "{z}/{x}/{y}"}.${treeNode.img || "png"}`,
                enablePickFeatures: false,
                level: treeNode.Level,
                minimumLevel: treeNode.minimumLevel,
@@ -1205,7 +1219,7 @@
                  treeNode.tileType === "Geo"
                    ? new Cesium.GeographicTilingScheme()
                    : new Cesium.WebMercatorTilingScheme(),
                alpha: treeNode.alpha,
                alpha: treeNode.alpha
              },
              "0",
              treeNode.zIndex,
@@ -1220,7 +1234,7 @@
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              url: treeNode.urls
            },
            true
          );
@@ -1237,7 +1251,7 @@
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              tilingScheme: sgworld.Core.getOffsetTilingScheme(),
              tilingScheme: sgworld.Core.getOffsetTilingScheme()
            },
            "0",
            treeNode.zIndex,
@@ -1256,7 +1270,7 @@
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              tilingScheme: sgworld.Core.getOffsetTilingScheme(),
              tilingScheme: sgworld.Core.getOffsetTilingScheme()
            },
            "0",
            treeNode.zIndex,
@@ -1279,7 +1293,7 @@
                : undefined, // 偏移纠正
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1303,7 +1317,7 @@
              alpha: treeNode.alpha,
              accessToken:
                treeNode.token ||
                "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A",
                "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A"
            },
            "0",
            treeNode.zIndex,
@@ -1328,7 +1342,7 @@
              tileMatrixSetID: "tiff",
              show: true,
              subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1358,8 +1372,8 @@
                // rectangleNortheastInMeters:new Cesium.Cartesian2(20037508.3427892, 20037508.3427892),
                numberOfLevelZeroTilesX: 4,
                numberOfLevelZeroTilesY: 4,
                projection: new Cesium.GeographicProjection(),
              }),
                projection: new Cesium.GeographicProjection()
              })
            },
            pID,
            undefined,
@@ -1376,7 +1390,7 @@
              url: treeNode.urls,
              layer: treeNode.layer,
              enablePickFeatures: false,
              show: true,
              show: true
            },
            pID,
            undefined,
@@ -1397,7 +1411,7 @@
          layer = sgworld.Creator.GeoWTFS({
            token: treeNode.token || "c53eb074c3fcba5ac86103d4d711bbe8",
            url: treeNode.urls,
            subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
            subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"]
          });
          break;
        case "txmap":
@@ -1419,8 +1433,8 @@
                },
                sy: (_imageryProvider, _x, y, level) => {
                  return ((1 << level) - y) >> 4;
                },
              },
                }
              }
            },
            "0",
            treeNode.zIndex,
@@ -1440,7 +1454,7 @@
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: 18,
              tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 偏移纠正
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1460,7 +1474,7 @@
              style: treeNode.style,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1481,7 +1495,7 @@
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1501,7 +1515,7 @@
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1529,7 +1543,7 @@
              show: true,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1550,7 +1564,7 @@
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1561,10 +1575,10 @@
        case "wmts_zj":
          // 行列号差两倍的wmts
          var geotil = new Cesium.GeographicTilingScheme({
            rectangle: Cesium.Rectangle.MAX_VALUE,
            rectangle: Cesium.Rectangle.MAX_VALUE
          });
          if (treeNode.addLevel && treeNode.addLevel === 2) {
            geotil.positionToTileXY = function (position, level, result) {
            geotil.positionToTileXY = function(position, level, result) {
              level > 0 && level++;
              var rectangle = this._rectangle;
              if (!Cesium.Rectangle.contains(rectangle, position)) {
@@ -1603,7 +1617,7 @@
              result.y = yTileCoordinate;
              return result;
            };
            geotil.tileXYToRectangle = function (x, y, level, result) {
            geotil.tileXYToRectangle = function(x, y, level, result) {
              level > 0 && level++;
              var rectangle = this._rectangle;
@@ -1645,7 +1659,7 @@
              addLevel: treeNode.addLevel || 1, //层级加一
              enablePickFeatures: false,
              show: true,
              alpha: treeNode.alpha,
              alpha: treeNode.alpha
            },
            "0",
            treeNode.zIndex,
@@ -1659,7 +1673,7 @@
          var parameters = {
            service: "WMS",
            format: "image/png",
            transparent: true,
            transparent: true
          };
          if (treeNode.removeNullValue) {
            if (treeNode.nullvalue) {
@@ -1688,7 +1702,7 @@
                cacheUrl: treeNode.cacheUrl || treeNode.urls,
                fileExtension: treeNode.fileExtension,
                cacheMaxLevel: treeNode.cacheMaxLevel || 16,
                alpha: treeNode.alpha,
                alpha: treeNode.alpha
              },
              "0",
              treeNode.zIndex,
@@ -1708,7 +1722,7 @@
                maximumLevel: treeNode.maximumLevel,
                enablePickFeatures: false,
                parameters: parameters,
                alpha: treeNode.alpha,
                alpha: treeNode.alpha
              },
              "0",
              treeNode.zIndex,
@@ -1750,8 +1764,8 @@
              alpha: treeNode.alpha,
              parameters: {
                format: "image/png",
                transparent: true,
              },
                transparent: true
              }
            },
            "0",
            undefined,
@@ -1771,9 +1785,9 @@
                "?version=1.3.0&request=GetFeature&format=json&typename=" +
                treeNode.layer
            )
            .then((data) => {
            .then(data => {
              let features = data.data.features;
              features.forEach((feature) => {
              features.forEach(feature => {
                let geom = feature.geometry.coordinates;
                let properties = feature.properties;
                let point = new SmartEarth.Degrees(geom[0], geom[1], 0);
@@ -1847,7 +1861,7 @@
                    minimumLevel: 16,
                    maximumLevel: 22,
                    // 无视遮挡
                    disableDepthTestDistance: Infinity,
                    disableDepthTestDistance: Infinity
                  },
                  0,
                  "文本"
@@ -1898,7 +1912,7 @@
                undefined
              ),
              labelData: treeNode.labelData,
              imageData: treeNode.imageData,
              imageData: treeNode.imageData
            };
            if (
@@ -1909,11 +1923,11 @@
            ) {
              de.labelData = {
                horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                pixelOffset: new Cesium.Cartesian2(20, 0),
                pixelOffset: new Cesium.Cartesian2(20, 0)
              };
              de.imageData = {
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                pixelOffset: new Cesium.Cartesian2(0, 0),
                pixelOffset: new Cesium.Cartesian2(0, 0)
              };
            }
            layer = sgworld.Creator.createLabelPointGeoJsonFeatureLayer(
@@ -1947,7 +1961,7 @@
                "rgba(0,0,0,0)"
              ),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity)
            };
            layer = sgworld.Creator.createPolylineGeoJsonFeatureLayer(
@@ -1974,7 +1988,7 @@
              near: "0",
              far: "99999999999",
              radiusScale: treeNode.radiusScale,
              connect: true,
              connect: true
            };
            layer = sgworld.Creator.createpolylineVolumeGeojsonPrimitiveLayer(
              treeNode.name,
@@ -1982,16 +1996,15 @@
              de,
              "0",
              true,
              function (data) {
              function(data) {
                if (treeNode.flow) {
                  let lines = data.entities.values;
                  lines.forEach((line) => {
                    line.polylineVolume.material =
                      sgworld.Core.getTrailLinkMaterial(
                        sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                        "../static/images/smoke.png",
                        9000
                      );
                  lines.forEach(line => {
                    line.polylineVolume.material = sgworld.Core.getTrailLinkMaterial(
                      sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
                      "../static/images/smoke.png",
                      9000
                    );
                  });
                }
              }
@@ -2007,7 +2020,7 @@
              heightReference: 0,
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: "0",
              far: "99999999999",
              far: "99999999999"
            };
            layer = sgworld.Creator.createModelPointGeoJsonFeatureLayer(
              treeNode.name,
@@ -2057,7 +2070,7 @@
              labelOutlineWidth: 2,
              disableDepthTestDistance: treeNode.disableDepthTestDistance,
              water: treeNode.water,
              water: treeNode.water
            };
            layer = sgworld.Creator.createPolygonGeoJsonFeatureLayer(
              treeNode.name,
@@ -2076,14 +2089,14 @@
            width: treeNode.width || 4.0, //线的宽度
            pointColor: treeNode.pointColor || "#FFFFFF", //移动点的颜色
            speed: treeNode.speed || 5,
            far: treeNode.far || 5000,
            far: treeNode.far || 5000
          });
          break;
        case "vector": {
          let urls = {
            url: treeNode.urls,
            layer: treeNode.layer,
            srs: treeNode.srs,
            srs: treeNode.srs
          };
          if (
            treeNode.class === "point" ||
@@ -2141,7 +2154,7 @@
                  undefined
                ),
                labelData: treeNode.labelData,
                imageData: treeNode.imageData,
                imageData: treeNode.imageData
              };
            }
@@ -2153,11 +2166,11 @@
            ) {
              de.labelData = {
                horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                pixelOffset: new Cesium.Cartesian2(20, 0),
                pixelOffset: new Cesium.Cartesian2(20, 0)
              };
              de.imageData = {
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                pixelOffset: new Cesium.Cartesian2(0, 0),
                pixelOffset: new Cesium.Cartesian2(0, 0)
              };
            }
            urls.upperLevelLimit = de.level_max;
@@ -2168,7 +2181,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function() {}
            );
          } else if (treeNode.class === "polylineVolume") {
            de = {
@@ -2188,7 +2201,7 @@
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
              radiusScale: treeNode.radiusScale,
              radiusScale: treeNode.radiusScale
            };
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
@@ -2198,7 +2211,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function() {}
            );
          } else if (treeNode.class === "polyline") {
            de = {
@@ -2226,20 +2239,19 @@
                "rgba(0,0,0,0)"
              ),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity)
            };
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
            layer =
              sgworld.Creator.createPrimitivePolylineVectorGeoJsonFeatureLayerProvider(
                treeNode.name,
                urls,
                de,
                "0",
                treeNode.checked,
                function () {}
              );
            layer = sgworld.Creator.createPrimitivePolylineVectorGeoJsonFeatureLayerProvider(
              treeNode.name,
              urls,
              de,
              "0",
              treeNode.checked,
              function() {}
            );
          } else if (treeNode.class === "polygon") {
            de = {
              id: treeNode.id,
@@ -2260,19 +2272,18 @@
              ),
              classificationType: treeNode.classificationType,
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity)
            };
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
            layer =
              sgworld.Creator.createGeoJsonFeatureLayerProviderOptimization(
                treeNode.name,
                urls,
                de,
                "0",
                treeNode.checked,
                function () {}
              );
            layer = sgworld.Creator.createGeoJsonFeatureLayerProviderOptimization(
              treeNode.name,
              urls,
              de,
              "0",
              treeNode.checked,
              function() {}
            );
          } else if (treeNode.class === "model") {
            de = {
              id: treeNode.id,
@@ -2286,7 +2297,7 @@
              heightReference: 0,
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: "0",
              far: "99999999999",
              far: "99999999999"
            };
            //模型点
            urls.upperLevelLimit = de.level_max;
@@ -2297,7 +2308,7 @@
              de,
              "0",
              treeNode.checked,
              function () {}
              function() {}
            );
          }
          layer && (treeNode.id = layer.treeobj.id);
@@ -2309,7 +2320,7 @@
            {
              id: treeNode.id,
              requestVertexNormals: true,
              url: treeNode.urls,
              url: treeNode.urls
            },
            "0",
            true,
@@ -2326,7 +2337,7 @@
              url: treeNode.urls || "",
              token: treeNode.token,
              cacheUrl: treeNode.cacheUrl,
              cacheLevel: treeNode.cacheLevel,
              cacheLevel: treeNode.cacheLevel
            },
            "0",
            true,
@@ -2343,7 +2354,7 @@
              url: treeNode.urls,
              token: treeNode.token,
              cacheUrl: treeNode.cacheUrl,
              cacheLevel: treeNode.cacheLevel,
              cacheLevel: treeNode.cacheLevel
            },
            "0",
            true,
@@ -2356,7 +2367,7 @@
            {
              id: treeNode.id,
              requestVertexNormals: true,
              url: treeNode.urls,
              url: treeNode.urls
            },
            "0",
            true,
@@ -2368,7 +2379,7 @@
            treeNode.name,
            {
              id: treeNode.id,
              requestVertexNormals: true,
              requestVertexNormals: true
            },
            "0",
            true,
@@ -2389,7 +2400,7 @@
                treeNode.maximumMemoryUsage &&
                parseInt(treeNode.maximumMemoryUsage),
              geometricError:
                treeNode.geometricError && parseInt(treeNode.geometricError),
                treeNode.geometricError && parseInt(treeNode.geometricError)
            },
            {
              groundCenter: treeNode.Center,
@@ -2401,7 +2412,7 @@
              effectsMaxHeight: treeNode.effectsMaxHeight || 150,
              colors: treeNode.alpha
                ? "rgba(255,255,255," + treeNode.alpha + ")"
                : treeNode.color || undefined,
                : treeNode.color || undefined
            },
            "0",
            true
@@ -2411,7 +2422,7 @@
          layer = sgworld.Creator.createS3MLayer(
            treeNode.urls,
            sgworld._Viewer.scene,
            function () {}
            function() {}
          );
          break;
        case "gltf":
@@ -2424,7 +2435,7 @@
              scale: treeNode.scale || 1,
              heading: treeNode.heading,
              pitch: treeNode.pitch,
              roll: treeNode.roll,
              roll: treeNode.roll
            },
            "0",
            treeNode.name,
@@ -2438,7 +2449,7 @@
        case "videoPolygon":
          layer = sgworld.Creator.addVideoPolygon(treeNode.positions, {
            url: treeNode.url,
            angle: treeNode.angle,
            angle: treeNode.angle
          });
          break;
        case "MilitaryPlotting":
@@ -2455,7 +2466,7 @@
            treeNode.name,
            treeNode.position,
            {
              translation: Cesium.Cartesian3.fromElements(0, 0, 0), //平移
              translation: Cesium.Cartesian3.fromElements(0, 0, 0) //平移
            }
          );
          layer.name = treeNode.name;
@@ -2484,7 +2495,7 @@
            sgworld.Core.toDegrees(treeNode.posisitons[0]),
            sgworld.Core.toDegrees(treeNode.posisitons[1]),
            {
              clampToGround: true,
              clampToGround: true
            }
          );
          break;
@@ -2528,7 +2539,7 @@
        case "DynamicSatellite":
          let dtwxzsData = sgworld.Creator.createConeRadar(treeNode.position, {
            color: "#7b9ef7",
            radius: 200000,
            radius: 200000
          });
          let weixin = sgworld.Creator.createModel(
            treeNode.position,
@@ -2547,7 +2558,7 @@
            treeNode.urls,
            {
              id: treeNode.id,
              scale: treeNode.scale || 1,
              scale: treeNode.scale || 1
            },
            pID,
            treeNode.name,
@@ -2560,7 +2571,7 @@
        treeNode.flyTo = [
          treeNode.lon,
          treeNode.lat,
          defaultValue(treeNode.height, 10000),
          defaultValue(treeNode.height, 10000)
        ];
      }
      if (treeNode.minx && treeNode.miny && treeNode.maxx && treeNode.maxy) {
@@ -2568,7 +2579,7 @@
          treeNode.minx,
          treeNode.miny,
          treeNode.maxx,
          treeNode.maxy,
          treeNode.maxy
        ];
      }
      if (treeNode.sourceType === "wfs") {
@@ -2682,16 +2693,15 @@
    // },
    initCluster(treeNode) {
      this.$set(treeNode, "disabled", true); //给treeNode添加disabled属性
      // this.$set(treeNode, "disabled", true); //给treeNode添加disabled属性
      let that = this;
      let imgUrl;
      new Cesium.GeoJsonDataSource.load(
        treeNode.urls +
          "?version=1.3.0&request=GetFeature&format=json&typename=" +
          treeNode.layer
      ).then((dataSource) => {
        that.$set(treeNode, "disabled", false);
      ).then(dataSource => {
        // that.$set(treeNode, "disabled", false);
        Viewer.dataSources.add(dataSource);
        clusterItemList.push({ name: treeNode.id, dataSource: dataSource });
        // window.clusterItem = dataSource;
@@ -2702,7 +2712,7 @@
        dataSource.clustering.minimumClusterSize = 20;
        // foreach用于调用数组的每个元素,并将元素传递给回调函数。
        dataSource.entities.values.forEach((entity) => {
        dataSource.entities.values.forEach(entity => {
          if (entity.featureType == "yz井数据") {
            switch (feature.properties["井类型"]) {
              default:
@@ -2722,7 +2732,7 @@
              0,
              5000.0
            ),
            disableDepthTestDistance: Number.POSITIVE_INFINITY,
            disableDepthTestDistance: Number.POSITIVE_INFINITY
          };
          entity.tag = treeNode.id;
          // entity.label = {
@@ -2738,7 +2748,7 @@
        });
        // 添加监听函数
        dataSource.clustering.clusterEvent.addEventListener(function (
        dataSource.clustering.clusterEvent.addEventListener(function(
          clusteredEntities,
          cluster
        ) {
@@ -2840,7 +2850,7 @@
      canvas.height = size;
      let ctx = canvas.getContext("2d");
      let promise = new Cesium.Resource.fetchImage(url).then((image) => {
      let promise = new Cesium.Resource.fetchImage(url).then(image => {
        // 异常判断
        try {
          ctx.drawImage(image, 0, 0);
@@ -2871,7 +2881,7 @@
      if (checked) {
        proj4.defs(
          "EPSG:BJ2000",
          `PROJCS["BJ2000",GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.2572221016125]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["false_easting",800146.323386],PARAMETER["false_northing",-3819654.065068],PARAMETER["central_meridian",116.391111111],PARAMETER["scale_factor",1.0],PARAMETER["latitude_of_origin",0],UNIT["Meter",1.0]]`
          `PROJCS["BJ2000",GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.2572221016125]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["false_easting",799985],PARAMETER["false_northing",-3819110.065068],PARAMETER["central_meridian",116.391111111],PARAMETER["scale_factor",1.0],PARAMETER["latitude_of_origin",0],UNIT["Meter",1.0]]`
        );
        const EPSGBJ2000 = proj4.defs("EPSG:BJ2000");
        const topResolution = 52435.4584709169;
@@ -2900,21 +2910,31 @@
            rectangleNortheastInMeters: new Cesium.Cartesian2(
              894455.6954487278,
              728066.4921236223
            ),
            )
          }),
          maximumLevel: 19,
          tileHeight: 512,
          tileWidth: 512,
          tileWidth: 512
        });
        if (treeNode.name == "北京2000影像") {
          bj2000SATE =
            window.Viewer.imageryLayers.addImageryProvider(customProvider);
          bj2000SATE = window.Viewer.imageryLayers.addImageryProvider(
            customProvider,
            2
          );
          // console.log(customProvider);
          console.log(Viewer.imageryLayers);
          console.log(bj2000SATE);
          // Viewer.imageryLayers.res;
        } else if (treeNode.name == "北京2000矢量") {
          bj2000Shiliang =
            window.Viewer.imageryLayers.addImageryProvider(customProvider);
          bj2000Shiliang = window.Viewer.imageryLayers.addImageryProvider(
            customProvider,
            2
          );
        } else {
          lishiyingxiang =
            window.Viewer.imageryLayers.addImageryProvider(customProvider);
          lishiyingxiang = window.Viewer.imageryLayers.addImageryProvider(
            customProvider,
            2
          );
        }
      } else {
        if (treeNode.name == "北京2000影像") {
@@ -2927,7 +2947,6 @@
      }
    },
    createCustom54(treeNode, checked) {
      // debugger;
      if (checked) {
        proj4.defs(
          "EPSG:BJ2000",
@@ -2960,21 +2979,27 @@
            rectangleNortheastInMeters: new Cesium.Cartesian2(
              894455.6954487278,
              728066.4921236223
            ),
            )
          }),
          maximumLevel: 19,
          tileHeight: 512,
          tileWidth: 512,
          tileWidth: 512
        });
        lishiyingxiang =
          window.Viewer.imageryLayers.addImageryProvider(customProvider);
        lishiyingxiang = window.Viewer.imageryLayers.addImageryProvider(
          customProvider
        );
      } else {
        window.Viewer.imageryLayers.remove(lishiyingxiang, true);
      }
    },
    }
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    }
  }
};
</script>
0.</script>
<style scoped>
.openLeftMenu {
  position: absolute;
@@ -3003,7 +3028,9 @@
  transition: 1s;
  z-index: 9999;
}
.switchbox {
  margin-top: 5px;
}
.closeLeftMenu:hover {
  cursor: pointer;
  transform: rotateZ(90deg);
@@ -3037,6 +3064,9 @@
  /* box-shadow: 0px 0px 5px 2px #a8a8a8; */
}
.leftmenu:hover {
  background-image: url("~@/assets/img/new/treeClose-y.png");
}
.leftmenu {
  background-image: url("~@/assets/img/new/treeClose.png");
  background-size: 100% 100%;
@@ -3101,23 +3131,25 @@
  font-size: 14px;
}
.layerTree::-webkit-scrollbar {
::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 4px;
  width: 5px;
  /*高宽分别对应横竖滚动条的尺寸*/
  height: 4px;
  height: 8px;
  scrollbar-arrow-color: red;
}
.layerTree::-webkit-scrollbar-thumb {
/* 滚动条 */
::-webkit-scrollbar-thumb {
  border-radius: 5px;
  -webkit-box-shadow: inset 0 0 5px rgba(255, 255, 255, 0.2);
  box-shadow: inset 0 0 5px rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.5);
  -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  background: rgba(218, 218, 218, 0.5);
  scrollbar-arrow-color: red;
}
.layerTree::-webkit-scrollbar-track {
/* 滚动槽 */
::-webkit-scrollbar-track {
  -webkit-box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  box-shadow: inset 0 0 5px rgba(218, 218, 218, 0.2);
  border-radius: 0;
@@ -3126,7 +3158,6 @@
.el-tree .TreeNodeClass {
  width: 100%;
  background-color: #bfa;
  flex: 1;
  display: flex;
  align-items: center;