lixuliang
2024-04-18 e59dff960b556d7ab4b888681cfb9478d4ac8ee4
src/components/props/situationComparison7-1.vue
@@ -1,95 +1,245 @@
<template>
  <div class="bot"
       v-if="showsituation">
  <div class="bot" v-if="showsituation">
    <div class="top1">
      <span class="botcon">
        <span class="icon"></span>
        <span class="text">zcTS\筹划步骤</span>
        <span class="text">资源目录</span>
      </span>
      <span class="close"
            @click="close">x</span>
      <span class="close" @click="close">x</span>
    </div>
    <div class="next">
      <el-form ref="form"
               :model="form"
               label-width="240px">
        <el-form-item label="区域:">
          <el-select v-model="form.points"
                     @change="changeplase">
            <el-option v-for="(item, index) in regions"
                       :key="index"
                       :label="item.vname"
                       :value="{ value: item.vlatlngs, label: item.vname }">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="起始时间:">
          <el-date-picker v-model="form.startTime"
                          value-format="yyyyMMdd"
                          :picker-options="pickerOptions"
                          format="yyyy-MM-dd"
                          type="date"
                          placeholder="选择日期"
                          @change="change">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="结束时间:">
          <el-date-picker v-model="form.endTime"
                          value-format="yyyyMMdd"
                          :picker-options="pickerOptions"
                          format="yyyy-MM-dd"
                          type="date"
                          placeholder="选择日期"
                          @change="change1">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="分析类型:">
          <el-select v-model="form.analysisType">
            <el-option label="频点"
                       value="1"></el-option>
            <el-option label="频段"
                       value="2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="无线电业务:">
          <el-select v-model="form.radio"
                     @change="choose">
            <el-option v-for="item in radios"
                       :key="item.value"
                       :label="item.bussName"
                       :value="item.startFreq + '-' + item.endFreq">
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div class="btns">
        <span @click="reset">重置</span>
        <span @click="analysis">分析</span>
      <div class="layerTreeContainer">
        <div class="layerTree">
          <el-tree
            :data="treeData"
            node-key="id"
            ref="tree"
            :default-checked-keys="arr"
            show-checkbox
            :render-content="renderContent"
            :default-expanded-keys="defaultExpanded"
            @check="check"
          >
          </el-tree>
        </div>
      </div>
    </div>
    <div class="showpic"
         v-if="showpic">
      <div :style="innerbac"
           @click="openDia"></div>
    </div>
    <changePic @colordata="getdata" />
  </div>
  <!-- <div class="bot" v-if="showsituation">
    <div class="top1">
      <span class="botcon">
        <span class="icon"></span>
        <span class="text">资源目录</span>
      </span>
      <span class="close" @click="close">x</span>
    </div>
  </div> -->
</template>
<script>
import { createPic,freqBandAnalysis,showCQ } from "../../api/http";
import { createPic, freqBandAnalysis, showCQ } from "../../api/http";
import changePic from "../common/color.vue";
import bus from "../../utils/bus";
import axios from "axios";
let hander,divPoint3;
let Base64=require("js-base64").Base64;
import common from "@/components/common";
let projectTreeData = [];
//添加工程树数据
function addTreeData(data, layer) {
  var d = {};
  for (var key in data) {
    d[key] = data[key];
  }
  d.item = layer;
  projectTreeData.push(d);
}
//通过id获取指定元素
function _getTreeData(id) {
  for (var i = 0; i < projectTreeData.length; i++) {
    if (
      projectTreeData[i].id === id ||
      (projectTreeData[i].datatype === "entity" &&
        projectTreeData[i].item &&
        projectTreeData[i].item.entity &&
        projectTreeData[i].item.entity.id === id) ||
      (projectTreeData[i].datatype === "editEntity" &&
        projectTreeData[i].item &&
        projectTreeData[i].item[projectTreeData[i].type] &&
        projectTreeData[i].item[projectTreeData[i].type].id === id)
    ) {
      return projectTreeData[i];
    }
  }
}
//转换sg颜色
function getSGColor(color) {
  let _color = parseInt(color).toString(16);
  if (_color.length === 2) {
    _color = "0000" + _color;
  } else if (_color.length === 4) {
    _color = "00" + _color;
  }
  _color = "#" + _color.slice(4) + _color.slice(2, 4) + _color.slice(0, 2);
  return _color;
}
//解析XML
function getXMLData(xml, isColor) {
  let xml2json = $.xml2json($.parseXML(xml));
  let data = {
    value: undefined,
    defaultValue: isColor
      ? getSGColor(xml2json.DefaultValue)
      : xml2json.DefaultValue,
  };
  if (xml2json && !xml2json.Class.length) {
    data.value = xml2json.Class.Value;
  } else if (xml2json && xml2json.Class.length) {
    let Value = {
      Condition: undefined,
      Value: {},
    };
    xml2json.Class.forEach((item) => {
      let condition = item.Condition.replace(/\"/g, "");
      let eli = condition.replace("<", "").replace(">", "").split("=");
      if (!Value.Condition) {
        eli[0] = eli[0].replace("[", "").replace("]", "");
        Value.Condition = eli[0];
      }
      Value.Value[eli[1]] = isColor ? getSGColor(item.Value) : item.Value;
    });
    data.value = Value;
  }
  return data;
}
// 根据样式文件 转为样式
function GetStyleByStyleJson(json) {
  if (json instanceof Array) {
    json = json[0];
  }
  let entity = { label: {}, billboard: {} };
  //字体颜色
  if (json.TextColor.indexOf("Classification") > -1) {
    entity.label.fillColor = getXMLData(json.TextColor, true);
  } else {
    entity.label.fillColor = getSGColor(json.TextColor);
  }
  //字体大小
  if (json.TextSize.indexOf && json.TextSize.indexOf("Classification") > -1) {
    json.TextSize = getXMLData(json.TextSize);
    json.TextSize.defaultValue =
      Math.abs(parseInt(json.TextSize.defaultValue)) + "px " + json.Font;
    for (let key in json.TextSize.value.Value) {
      json.TextSize.value.Value[key] =
        Math.abs(parseInt(json.TextSize.value.Value[key])) + "px " + json.Font;
    }
    entity.label.font = json.TextSize;
  } else {
    entity.label.font = json.TextSize + "px " + json.Font;
  }
  //字体风格
  // if (json.Font.indexOf("Classification") > -1) {
  //   json.Font = getXMLData(json.Font);
  //   entity.label.fontFamily = json.Font;
  // }
  // entity.label.sacle = json.Scale;
  entity.label.showBackground = !!parseInt(json.BackgroundOpacity);
  if (entity.label.showBackground) {
    if (json.BackgroundColor.indexOf("Classification") > -1) {
      entity.label.backgroundColor = getXMLData(json.BackgroundColor, true);
    } else {
      entity.label.backgroundColor = getSGColor(json.BackgroundColor);
    }
  }
  entity.near = json.MinVisibilityDistance;
  entity.far = json.MaxVisibilityDistance;
  if (json.Text && json.Text.indexOf("Classification") > -1) {
    entity.label.text = getXMLData(json.Text);
  } else {
    entity.label.text = json.Text;
  }
  if (json.Imagefile && json.Imagefile.indexOf("Classification") > -1) {
    entity.billboard.image = getXMLData(json.Imagefile);
  } else {
    entity.billboard.image = json.Imagefile;
  }
  if (entity.billboard.image && entity.label.text) {
    entity.imageData = {
      horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
    };
    entity.labelData = {
      horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
    };
  }
  return entity;
}
//获取矢量切片注记点样式
async function getVectorStyleFromSG(treeNode, json) {
  let de;
  await axios.get(json).then((res) => {
    let entitystyle = GetStyleByStyleJson(res.data);
    de = {
      id: treeNode.id,
      level_min: defaultValue(treeNode.minimumLevel, 10),
      level_max: defaultValue(treeNode.maximumLevel, 22),
      fillColor: defaultValue(entitystyle.label.fillColor, "#ffffff"),
      outlineColor: defaultValue(entitystyle.label.outlineColor, "#ffffff"),
      backgroundColor: defaultValue(
        entitystyle.label.backgroundColor,
        "#ffffff"
      ),
      heightReference: defaultValue(treeNode.heightReference, 1),
      pointHeight: defaultValue(treeNode.pointHeight, undefined),
      showBackground: defaultValue(entitystyle.label.showBackground, false),
      outlineWidth: defaultValue(entitystyle.label.outlineWidth, 1),
      text: entitystyle.label.text,
      image: entitystyle.billboard.image,
      font: entitystyle.label.font,
      near: entitystyle.near,
      far: entitystyle.far,
      disableDepthTestDistance: Number.POSITIVE_INFINITY,
      scale: entitystyle.label.scale,
      labelData: entitystyle.labelData,
      imageData: entitystyle.imageData,
    };
  });
  return de;
}
function defaultValue(a, b) {
  return a !== undefined ? a : b;
}
let hander, divPoint3;
let Base64 = require("js-base64").Base64;
export default {
  components: {
    changePic,
  },
  data () {
  data() {
    return {
      alldisabled: [],
      defaultExpanded: [],
      arr: [], //用来保存资源目录中默认选中的节点id
      SmartEarthToken: undefined,
      treeData: [],
      defaultCheck: [],
      form: {
        points: "",
        startTime: new Date("2016-06-01"),
@@ -115,7 +265,7 @@
        border: "1px solid #000",
        transform: "translate(40px,90px)",
        backgroundImage:
          "url("+require("@/assets/image/botbtn/color.png")+")",
          "url(" + require("@/assets/image/botbtn/color.png") + ")",
        backgroundPosition: "center",
        backgroundSize: ` 100% 100%`,
      },
@@ -124,32 +274,1608 @@
      showDianci: false,
    };
  },
  mounted () {
    bus.$on("clearEve",(e) => {
      this.reset();
    });
    bus.$on("radioData",(e) => {
      this.radios=e;
    });
    bus.$on("guanzhou",(e) => {
      this.form.startTime=e.fromdate;
      this.form.endTime=e.todate;
    });
    bus.$on("areaData",(e) => {
      this.regions=e;
    });
    bus.$on("showdio",(e) => {
      this.showsituation=e=="7-1"
      this.showdata1=true;
      this.showdata2=true;
  mounted() {
    window.ProjectTree = this.$refs.tree;
    //获取token并请求加载图层数据
    this.SmartEarthToken = common.smartearthtoken;
    this.$nextTick(() => {
      bus.$on("clearEve", (e) => {
        this.reset();
      });
      bus.$on("radioData", (e) => {
        this.radios = e;
      });
      bus.$on("guanzhou", (e) => {
        this.form.startTime = e.fromdate;
        this.form.endTime = e.todate;
      });
      bus.$on("areaData", (e) => {
        this.regions = e;
      });
      bus.$on("showdio", (e) => {
        this.showsituation = e == "7-1";
        this.showdata1 = true;
        this.showdata2 = true;
      });
      axios.get("./static/layers.json").then(
        (response) => {
          console.log(response);
          // // 得到默认选中的数据的id
          this.parseJson(response.data.children);
          // //场景配置
          this.treeData = response.data && response.data.children;
          this.setDefaultCheck(response.data);
        },
        (response) => {
          console.log("获取场景配置失败!");
        }
      );
    });
  },
  methods: {
    changeplase (value) {
      if(value.label.indexOf("广州")>-1) {
        this.chooseplase="广州";
        this.form.startTime=new Date("2019-10-08");
        this.form.endTime=new Date("2019-10-16");
    // yhadd
    closeJm() {
      this.$parent.$parent.$parent.isShowResMenu = false;
    },
    // 递归遍历json,得到checked:true的数据的id,添加到arr中
    parseJson(jsonObj) {
      // 声明变量count,记录disabled存在的节点的全部数据
      var count = 0;
      for (var v in jsonObj) {
        var element = jsonObj[v];
        if (element.expanded) {
          this.defaultExpanded.push(element.id);
        }
        if (element.children == undefined || element.children.length == 0) {
          if (element._children == undefined || element._children.length == 0) {
            if (element.checked) {
              this.arr.push(element.id);
            }
            if (element.urls == undefined || element.urls == "") {
              element.disabled = true;
              count++;
            }
          } else {
            this.parseJson(element._children);
          }
        } else {
          this.parseJson(element.children);
        }
      }
      if (count !== 0) {
        // 添加含有disabled属性的节点数组,
        this.alldisabled.push(jsonObj);
      }
    },
    async setDefaultCheck(node) {
      this.ergodicNode(node);
      // this.$refs.tree.setCheckedKeys(this.defaultCheck);
      // setTimeout(()=>{
      //   this.$refs.tree.setCheckedKeys(['tc3857']);
      // },1000)
    },
    ergodicNode(node) {
      if (node.expanded) {
        this.defaultExpanded.push(node.id);
      }
      if (node.checked && !node.children) {
        this.defaultCheck.push(node.id);
        if (!node.isAdd) {
          if (node._children) {
            if (node.thisView) {
              if (node._children[0].children) {
                node._children[0].children.forEach((item) => {
                  this.addTreeData(item);
                });
              } else {
                this.addTreeData(node._children[0]);
              }
            } else {
              node._children.forEach((item) => {
                this.addTreeData(item);
              });
            }
          } else {
            this.addTreeData(node);
          }
        }
      }
      if (node.children && node.children.length) {
        node.children.forEach((item) => {
          this.ergodicNode(item);
        });
      }
    },
    checkChange(treeNode, b1, b2) {
      if (!treeNode.children && !treeNode._children) {
        var checkedKeys = this.$refs.tree.getCheckedKeys();
        let isCheck = checkedKeys.indexOf(treeNode.id) > -1;
        this.setVisiable(treeNode, isCheck);
      }
    },
    setChecked(id) {
      var checkedKeys = this.$refs.tree.getCheckedKeys();
      let isCheck = checkedKeys.indexOf(id) > -1;
      let treeNode = this.$refs.tree.getNode(id);
      if (treeNode && treeNode.data) {
        this.setVisiable(treeNode.data, isCheck);
      }
    },
    check(treeNode, data) {
      let isCheck = data.checkedKeys.indexOf(treeNode.id) > -1;
      this.setVisiable(treeNode, isCheck);
    },
    setVisiable(treeNode, checked) {
      if (checked !== undefined) {
        treeNode.checked = checked;
      } else {
        treeNode.checked = !treeNode.checked;
      }
      if (treeNode.children) {
        treeNode.children.forEach((item) => {
          this.setVisiable(item, treeNode.checked);
        });
        return;
      } else if (treeNode._children) {
        if (treeNode.thisView === "ewzj") {
          treeNode._children[0].checked = treeNode.checked;
          if (treeNode._children[0].children) {
            treeNode._children[0].children.forEach((item) => {
              item.checked = treeNode.checked;
              this.addTreeData(item);
            });
          } else {
            this.addTreeData(treeNode._children[0]);
          }
        } else if (treeNode.thisView === "swzj") {
          for (let i = 1; i < treeNode._children.length; i++) {
            treeNode._children[i].checked = treeNode.checked;
          }
          treeNode._children.forEach((item, index) => {
            index !== 0 && this.addTreeData(item);
          });
        } else if (!treeNode.thisView) {
          treeNode._children.forEach((item, index) => {
            item.checked = treeNode.checked;
            if (item.children) {
              item.children.forEach((_item) => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
            } else {
              this.addTreeData(item);
            }
          });
        }
        return;
      }
      if (!treeNode.isAdd) {
        this.addTreeData(treeNode);
        return;
      }
      let data = _getTreeData(treeNode.id);
      if (data) {
        data.item &&
          data.item.setVisibility &&
          data.item.setVisibility(treeNode.checked);
        data.item &&
          data.item.setVisible &&
          data.item.setVisible(treeNode.checked);
        data.item &&
          data.item.show !== undefined &&
          (data.item.show = treeNode.checked);
        if (data.datatype === "particle") {
          data.item.forEach((item) => {
            item.show = treeNode.checked;
          });
        }
      } else {
        if (
          treeNode.id &&
          treeNode.id.indexOf &&
          treeNode.id.indexOf("---") > -1
        ) {
          var ids = id.split("---");
          ids.forEach((item) => {
            sgworld.ProjectTree.setVisibility(item, treeNode.checked);
          });
        } else {
          sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked);
          var dd = Viewer.dataSources._dataSources.filter((item) => {
            return item.name == treeNode.id;
          });
          if (dd && dd.length > 0) {
            dd[0].show = treeNode.checked;
          }
        }
      }
    },
    props(data) {
      if (data.class === "imageLayer") {
        window.treeObj = {
          rightClickData: data,
        };
        layerOpen("影像", {
          width: 320,
          height: 310,
          url: "./static/html/layerProp.html",
          fn: {
            end: function () {},
          },
        });
      } else if (data._children) {
        if (data.thisView === "ewzj") {
          data.thisView = "swzj";
          data.name = "三维注记";
          data._children[0].checked = false;
          for (let i = 1; i < data._children.length; i++) {
            data._children[i].checked = data.checked;
          }
          data._children.forEach((item) => {
            if (item.children) {
              item.children.forEach((_item) => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
            } else {
              this.addTreeData(item);
            }
          });
        } else if (data.thisView === "swzj") {
          data.thisView = "ewzj";
          data.name = "二维注记";
          data._children[0].checked = data.checked;
          for (let i = 1; i < data._children.length; i++) {
            data._children[i].checked = false;
          }
          data._children.forEach((item) => {
            if (item.children) {
              item.children.forEach((_item) => {
                _item.checked = item.checked;
                this.addTreeData(_item);
              });
            } else {
              this.addTreeData(item);
            }
          });
        }
      }
    },
    flyTo(treeNode) {
      if (treeNode.children) return;
      if (treeNode._children && treeNode._children[0]) {
        this.flyTo(treeNode._children[0]);
        return;
      }
      if (treeNode && treeNode.flyTo) {
        if (treeNode && treeNode.flyTo.length === 3) {
          sgworld.Navigate.flyToPosition(
            treeNode.flyTo[0],
            treeNode.flyTo[1],
            treeNode.flyTo[2]
          );
        } else if (treeNode && treeNode.flyTo.length === 4) {
          sgworld.Navigate.flyToPointsInterest({
            destination: Cesium.Rectangle.fromDegrees(
              treeNode.flyTo[0],
              treeNode.flyTo[1],
              treeNode.flyTo[2],
              treeNode.flyTo[3]
            ),
          });
        } else {
          sgworld.Navigate.flyToPointsInterest({
            destination: Cesium.Cartesian3.fromDegrees(
              treeNode.flyTo[0],
              treeNode.flyTo[1],
              treeNode.flyTo[2]
            ),
            orientation: {
              heading: treeNode.flyTo[3],
              pitch: treeNode.flyTo[4],
              roll: treeNode.flyTo[5],
            },
          });
        }
        return;
      }
      let data = sgworld.ProjectTree.getObject(treeNode.id);
      data && data.item
        ? sgworld.Navigate.flyToObj(data.item)
        : sgworld.Navigate.flyToObj(data);
      if (data && data.datatype === "editEntity") {
        data && data.item && sgworld.Navigate.flyToObj(data.item[data.type]);
      }
    },
    renderContent(h, { node, data, store }) {
      if (data.icon) {
        return (
          <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}>
            <span class="typeIcon">
              <img src={data.icon} />
            </span>
            <span class="treeName">{data.name}</span>
          </span>
        );
      } else {
        return (
          <span class="custom-tree-node" on-dblclick={() => this.flyTo(data)}>
            <span class="treeName">{data.name}</span>
          </span>
        );
      }
    },
    async addTreeData(treeNode) {
      // if (treeNode.disabled) return;
      let _data = sgworld.ProjectTree.getObject(treeNode.id);
      let pID = 0;
      if (_data) {
        sgworld.ProjectTree.setVisibility(treeNode.id, treeNode.checked);
        return;
      } else {
        _data = _getTreeData(treeNode.id);
        if (_data) {
          _data.item &&
            _data.item.setVisibility &&
            _data.item.setVisibility(treeNode.checked);
          _data.item &&
            _data.item.setVisible &&
            _data.item.setVisible(treeNode.checked);
          _data.item &&
            _data.item.show !== undefined &&
            (_data.item.show = treeNode.checked);
          if (_data.datatype === "particle") {
            _data.item.forEach((item) => {
              item.show = treeNode.checked;
            });
          }
          return;
        }
      }
      if (!treeNode.urls || treeNode.isAdd) return;
      treeNode.isAdd = true;
      let layer;
      treeNode.token &&
        treeNode.token === "SmartEarthToken" &&
        (treeNode.token = this.SmartEarthToken);
      switch (treeNode.sourceType) {
        case "tms":
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "tms",
            {
              id: treeNode.id,
              url: treeNode.urls,
              fileExtension: treeNode.img || "png",
              enablePickFeatures: false,
              alpha: treeNode.alpha,
            },
            "0",
            undefined,
            true,
            ""
          );
          break;
        case "local-map":
          // 添加本地地图
          if (treeNode.tms) {
            layer = sgworld.Creator.createImageryProvider(
              treeNode.name,
              "tms",
              {
                id: treeNode.id,
                url: treeNode.urls,
                fileExtension: treeNode.img || "png",
                enablePickFeatures: false,
                level: treeNode.Level,
                minimumLevel: treeNode.minimumLevel,
                maximumLevel: treeNode.maximumLevel,
                tilingScheme:
                  treeNode.tileType === "Geo"
                    ? new Cesium.GeographicTilingScheme()
                    : new Cesium.WebMercatorTilingScheme(),
                alpha: treeNode.alpha,
              },
              "0",
              treeNode.zIndex,
              true,
              ""
            );
          } else {
            layer = sgworld.Creator.createUrlTemplateImageryProvider(
              treeNode.name,
              {
                id: treeNode.id,
                url: `${treeNode.urls}/${treeNode.tile || "{z}/{x}/{y}"}.${
                  treeNode.img || "png"
                }`,
                enablePickFeatures: false,
                level: treeNode.Level,
                minimumLevel: treeNode.minimumLevel,
                maximumLevel: treeNode.maximumLevel,
                tilingScheme:
                  treeNode.tileType === "Geo"
                    ? new Cesium.GeographicTilingScheme()
                    : new Cesium.WebMercatorTilingScheme(),
                alpha: treeNode.alpha,
              },
              "0",
              treeNode.zIndex,
              true,
              ""
            );
          }
          break;
        case "kml":
          // 添加kml数据
          layer = sgworld.Creator.addKmlLayer(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
            },
            true
          );
          break;
        case "google":
          // 添加谷歌地图
          layer = sgworld.Creator.createUrlTemplateImageryProvider(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              enablePickFeatures: false,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "arcgis":
          // arcgis地图
          layer = sgworld.Creator.createArcGisImageryLayer(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              enablePickFeatures: false,
              level: treeNode.Level,
              usePreCachedTilesIfAvailable: treeNode.GCJ02 ? false : true, // 是否使用服务的内置的切片方案,偏移纠正需要使用如下自定义的方案
              tilingScheme: treeNode.GCJ02
                ? sgworld.Core.getOffsetTilingScheme()
                : undefined, // 偏移纠正
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "mapbox":
          // mapbox地图
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "MapBox",
            {
              id: treeNode.id,
              name: treeNode.name,
              level: treeNode.Level,
              enablePickFeatures: false,
              mapId: treeNode.mapId,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
              accessToken:
                treeNode.token ||
                "pk.eyJ1IjoibWFyc2dpcyIsImEiOiJja2Fod2xlanIwNjJzMnhvMXBkMnNqcjVpIn0.WnxikCaN2KV_zn9tLZO77A",
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "tdmap":
          // 天地图
          layer = sgworld.Creator.createWebMapTileServerImageLayer(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: 18,
              style: treeNode.style,
              layer: treeNode.layer,
              format: treeNode.format,
              enablePickFeatures: false,
              tileMatrixSetID: "tiff",
              show: true,
              subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "tdt_label":
          // 天地图三维注记
          layer = sgworld.Creator.GeoWTFS({
            token: treeNode.token || "c53eb074c3fcba5ac86103d4d711bbe8",
            url: treeNode.urls,
            subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
          });
          break;
        case "txmap":
          // 腾讯地图
          layer = sgworld.Creator.createUrlTemplateImageryProvider(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              level: treeNode.Level,
              enablePickFeatures: false,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: 18,
              alpha: treeNode.alpha,
              tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 偏移纠正
              customTags: {
                sx: (_imageryProvider, x) => {
                  return x >> 4;
                },
                sy: (_imageryProvider, _x, y, level) => {
                  return ((1 << level) - y) >> 4;
                },
              },
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "gdmap":
          // 高德地图
          layer = sgworld.Creator.createUrlTemplateImageryProvider(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              enablePickFeatures: false,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: 18,
              tilingScheme: sgworld.Core.getOffsetTilingScheme(), // 偏移纠正
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "bdmap":
          // 百度地图
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "BaiduMap",
            {
              id: treeNode.id,
              level: treeNode.Level,
              enablePickFeatures: false,
              style: treeNode.style,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "cesiumblack":
          // cesiumIon黑夜地图
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "cesiumBlack",
            {
              id: treeNode.id,
              url: treeNode.urls,
              flipXY: true,
              enablePickFeatures: false,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "osm":
          // osm地图
          layer = sgworld.Creator.createImageryProvider(
            treeNode.name,
            "OpenStreetMap",
            {
              id: treeNode.id,
              url: treeNode.urls,
              enablePickFeatures: false,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "wmts":
          // wmts影像
          layer = sgworld.Creator.createWebMapTileServerImageLayer(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              level: treeNode.Level,
              style: treeNode.style,
              layer: treeNode.layer,
              enablePickFeatures: false,
              format: treeNode.format,
              tileMatrixSetID: treeNode.srs,
              tilingScheme:
                treeNode.tileType === "Geo"
                  ? new Cesium.GeographicTilingScheme()
                  : new Cesium.WebMercatorTilingScheme(),
              show: true,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "gis_wmts":
          // gisserver wmst影像
          layer = sgworld.Creator.createUrlTemplateImageryProvider(
            treeNode.name,
            {
              id: treeNode.id,
              url: Cesium.buildModuleUrl(
                treeNode.urls + "/{z}/{x}/{reverseY}.png"
              ),
              enablePickFeatures: false,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "wmts_zj":
          // 行列号差两倍的wmts
          var geotil = new Cesium.GeographicTilingScheme({
            rectangle: Cesium.Rectangle.MAX_VALUE,
          });
          if (treeNode.addLevel && treeNode.addLevel === 2) {
            geotil.positionToTileXY = function (position, level, result) {
              level > 0 && level++;
              var rectangle = this._rectangle;
              if (!Cesium.Rectangle.contains(rectangle, position)) {
                // outside the bounds of the tiling scheme
                return undefined;
              }
              var xTiles = this.getNumberOfXTilesAtLevel(level);
              var yTiles = this.getNumberOfYTilesAtLevel(level);
              var xTileWidth = rectangle.width / xTiles;
              var yTileHeight = rectangle.height / yTiles;
              var longitude = position.longitude;
              if (rectangle.east < rectangle.west) {
                longitude += Cesium.Math.TWO_PI;
              }
              var xTileCoordinate =
                ((longitude - rectangle.west) / xTileWidth) | 0;
              if (xTileCoordinate >= xTiles) {
                xTileCoordinate = xTiles - 1;
              }
              var yTileCoordinate =
                ((rectangle.north - position.latitude) / yTileHeight) | 0;
              if (yTileCoordinate >= yTiles) {
                yTileCoordinate = yTiles - 1;
              }
              if (!Cesium.defined(result)) {
                return new Cesium.Cartesian2(xTileCoordinate, yTileCoordinate);
              }
              result.x = xTileCoordinate;
              result.y = yTileCoordinate;
              return result;
            };
            geotil.tileXYToRectangle = function (x, y, level, result) {
              level > 0 && level++;
              var rectangle = this._rectangle;
              var xTiles = this.getNumberOfXTilesAtLevel(level);
              var yTiles = this.getNumberOfYTilesAtLevel(level);
              var xTileWidth = rectangle.width / xTiles;
              var west = x * xTileWidth + rectangle.west;
              var east = (x + 1) * xTileWidth + rectangle.west;
              var yTileHeight = rectangle.height / yTiles;
              var north = rectangle.north - y * yTileHeight;
              var south = rectangle.north - (y + 1) * yTileHeight;
              if (!Cesium.defined(result)) {
                result = new Cesium.Rectangle(west, south, east, north);
              }
              result.west = west;
              result.south = south;
              result.east = east;
              result.north = north;
              return result;
            };
          }
          layer = sgworld.Creator.createWebMapTileServerImageLayer(
            treeNode.name,
            {
              id: treeNode.id,
              url: treeNode.urls,
              layer: treeNode.layer,
              level: treeNode.Level,
              minimumLevel: treeNode.minimumLevel,
              maximumLevel: treeNode.maximumLevel,
              style: "default",
              tileMatrixSetID: "esritilematirx",
              format: "image/png",
              tilingScheme: geotil,
              addLevel: treeNode.addLevel || 1, //层级加一
              enablePickFeatures: false,
              show: true,
              alpha: treeNode.alpha,
            },
            "0",
            treeNode.zIndex,
            true,
            ""
          );
          break;
        case "wms":
        case "wmsc":
          // wms数据
          var parameters = {
            service: "WMS",
            format: "image/png",
            transparent: true,
          };
          if (treeNode.removeNullValue) {
            if (treeNode.nullvalue) {
              treeNode.nullvalue = treeNode.nullvalue.replace("rgb(", "");
              treeNode.nullvalue = treeNode.nullvalue.replace(")", "");
            }
            parameters.nullvalue = sgworld.Core.defaultValue(
              treeNode.nullvalue,
              "0,0,0"
            );
            parameters.nulltolerance = sgworld.Core.defaultValue(
              treeNode.nulltolerance,
              0
            );
          }
          treeNode.token && (treeNode.urls += "?token=" + treeNode.token);
          if (treeNode.sourceType === "wmsc") {
            layer = sgworld.Creator.createCacheImageryProvider(
              treeNode.name,
              {
                id: treeNode.id,
                url: treeNode.urls || "",
                layers: treeNode.layer || "",
                level: treeNode.Level,
                enablePickFeatures: false,
                cacheUrl: treeNode.cacheUrl || treeNode.urls,
                fileExtension: treeNode.fileExtension,
                cacheMaxLevel: treeNode.cacheMaxLevel || 16,
                alpha: treeNode.alpha,
              },
              "0",
              treeNode.zIndex,
              treeNode.checked,
              ""
            );
          } else {
            layer = sgworld.Creator.createImageryProvider(
              treeNode.name,
              "wms",
              {
                id: treeNode.id,
                url: treeNode.urls,
                layers: treeNode.layer || "",
                level: treeNode.Level,
                minimumLevel: treeNode.minimumLevel,
                maximumLevel: treeNode.maximumLevel,
                enablePickFeatures: false,
                parameters: parameters,
                alpha: treeNode.alpha,
              },
              "0",
              treeNode.zIndex,
              true,
              ""
            );
          }
          break;
        case "wfs":
          // wfs数据
          layer = sgwfs.CreateWfs(treeNode.class, treeNode);
          break;
        case "geojson":
          if (treeNode.class === "point") {
            treeNode.disableDepthTestDistance === "Infinity" &&
              (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
            de = {
              id: treeNode.id,
              fillColor: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
              color: sgworld.Core.defaultValue(treeNode.imageColor, undefined),
              outlineColor: sgworld.Core.defaultValue(
                treeNode.outlineColor,
                "#ffffff"
              ),
              backgroundColor: sgworld.Core.defaultValue(
                treeNode.backgroundColor,
                "#ffffff"
              ),
              heightReference: sgworld.Core.defaultValue(
                treeNode.heightReference,
                0
              ),
              pointHeight: sgworld.Core.defaultValue(
                treeNode.pointHeight,
                undefined
              ),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
              bold: treeNode.bold,
              italic: treeNode.italic,
              showBackground: treeNode.showBackground,
              outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 1),
              text: treeNode.text,
              image: treeNode.image,
              font_size: treeNode.size,
              font_family: sgworld.Core.defaultValue(
                treeNode.font_family,
                "微软雅黑"
              ),
              disableDepthTestDistance: sgworld.Core.defaultValue(
                treeNode.disableDepthTestDistance,
                undefined
              ),
              labelData: treeNode.labelData,
              imageData: treeNode.imageData,
            };
            if (
              treeNode.text &&
              treeNode.image &&
              !treeNode.labelData &&
              !treeNode.imageData
            ) {
              de.labelData = {
                horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                pixelOffset: new Cesium.Cartesian2(20, 0),
              };
              de.imageData = {
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                pixelOffset: new Cesium.Cartesian2(0, 0),
              };
            }
            layer = sgworld.Creator.createLabelPointGeoJsonFeatureLayer(
              treeNode.name,
              treeNode.urls,
              de,
              "0",
              treeNode.checked
            );
          } else if (treeNode.class === "polyline") {
            de = {
              id: treeNode.id,
              layertype: "polylinelayer",
              material: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
              outlineColor: sgworld.Core.defaultValue(
                treeNode.outlineColor,
                "#ffffff"
              ),
              outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
              height: sgworld.Core.defaultValue(treeNode.height, undefined),
              width: sgworld.Core.defaultValue(treeNode.width, 2),
              clampToGround: sgworld.Core.defaultValue(
                treeNode.clampToGround,
                true
              ),
              classificationType: treeNode.classificationType,
              dash: sgworld.Core.defaultValue(treeNode.dash, false),
              dashLength: sgworld.Core.defaultValue(treeNode.dashLength, 20),
              gapColor: sgworld.Core.defaultValue(
                treeNode.gapColor,
                "rgba(0,0,0,0)"
              ),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity),
            };
            layer = sgworld.Creator.createPolylineGeoJsonFeatureLayer(
              treeNode.name,
              treeNode.urls,
              de,
              "0",
              treeNode.checked
            );
          } else if (treeNode.class === "polylineVolume") {
            de = {
              id: treeNode.id,
              material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
              slttype: "0",
              number: "4",
              exradius: "1",
              inradius: "1",
              orth_width: "2",
              orth_height: "2",
              radius: sgworld.Core.defaultValue(treeNode.radius, 5),
              cornerType: "0",
              heightReference: "0",
              height: sgworld.Core.defaultValue(treeNode.lineHeight, 0),
              near: "0",
              far: "99999999999",
              radiusScale: treeNode.radiusScale,
              connect: true,
            };
            layer = sgworld.Creator.createpolylineVolumeGeojsonPrimitiveLayer(
              treeNode.name,
              treeNode.urls,
              de,
              "0",
              true,
              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
                      );
                  });
                }
              }
            );
          } else if (treeNode.class === "model") {
            de = {
              id: treeNode.id,
              collect: 0,
              uri: sgworld.Core.defaultValue(treeNode.model, ""),
              file: "",
              color: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
              scale: sgworld.Core.defaultValue(treeNode.scale, 1),
              heightReference: 0,
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: "0",
              far: "99999999999",
            };
            layer = sgworld.Creator.createModelPointGeoJsonFeatureLayer(
              treeNode.name,
              treeNode.urls,
              de,
              "0",
              true
            );
          } else if (treeNode.class === "polygon") {
            treeNode.disableDepthTestDistance === "Infinity" &&
              (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
            de = {
              id: treeNode.id,
              material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              outlineColor: sgworld.Core.defaultValue(
                treeNode.outlineColor,
                "#ff0000"
              ),
              extrudedHeight: sgworld.Core.defaultValue(
                treeNode.extrudedHeight,
                0
              ),
              outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
              outline: sgworld.Core.defaultValue(treeNode.outline, true),
              clampToGround: sgworld.Core.defaultValue(
                treeNode.clampToGround,
                treeNode.extrudedHeight === undefined &&
                  treeNode.height === undefined
              ),
              classificationType: treeNode.classificationType,
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, Infinity),
              text: treeNode.text,
              font: sgworld.Core.defaultValue(treeNode.font, "微软雅黑"),
              labelNear: treeNode.labelNear,
              labelFar: treeNode.labelFar,
              fontSize: sgworld.Core.defaultValue(treeNode.size, "18px"),
              italic: treeNode.italic,
              bold: treeNode.bold,
              pixelOffset: new Cesium.Cartesian2(
                sgworld.Core.defaultValue(treeNode.offsetX, 0),
                sgworld.Core.defaultValue(treeNode.offsetY, 0)
              ),
              labelOutlineWidth: 2,
              disableDepthTestDistance: treeNode.disableDepthTestDistance,
              water: treeNode.water,
            };
            layer = sgworld.Creator.createPolygonGeoJsonFeatureLayer(
              treeNode.name,
              treeNode.urls,
              de,
              "0",
              treeNode.checked
            );
          }
          break;
        case "pathLayer":
          layer = sgworld.Creator.createPathLayer({
            id: treeNode.id,
            url: treeNode.url,
            color: treeNode.color || "#0033FF", //线的颜色
            width: treeNode.width || 4.0, //线的宽度
            pointColor: treeNode.pointColor || "#FFFFFF", //移动点的颜色
            speed: treeNode.speed || 5,
            far: treeNode.far || 5000,
          });
          break;
        case "vector": {
          let urls = {
            url: treeNode.urls,
            layer: treeNode.layer,
            srs: treeNode.srs,
          };
          if (
            treeNode.class === "point" ||
            treeNode.class === "label" ||
            treeNode.class === "image"
          ) {
            treeNode.disableDepthTestDistance === "Infinity" &&
              (treeNode.disableDepthTestDistance = Number.POSITIVE_INFINITY);
            if (treeNode.style) {
              // de = getVectorStyleFromSG(treeNode, treeNode.style);
            } else {
              de = {
                id: treeNode.id,
                level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
                level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
                fillColor: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
                color: sgworld.Core.defaultValue(
                  treeNode.imageColor,
                  undefined
                ),
                outlineColor: sgworld.Core.defaultValue(
                  treeNode.outlineColor,
                  "#ffffff"
                ),
                backgroundColor: sgworld.Core.defaultValue(
                  treeNode.backgroundColor,
                  "#ffffff"
                ),
                heightReference: sgworld.Core.defaultValue(
                  treeNode.heightReference,
                  0
                ),
                pointHeight: sgworld.Core.defaultValue(
                  treeNode.pointHeight,
                  undefined
                ),
                near: sgworld.Core.defaultValue(treeNode.near, 0),
                far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
                bold: treeNode.bold,
                italic: treeNode.italic,
                showBackground: treeNode.showBackground,
                outlineWidth: sgworld.Core.defaultValue(
                  treeNode.outlineWidth,
                  1
                ),
                text: treeNode.text,
                image: treeNode.image,
                font_size: treeNode.size,
                font_family: sgworld.Core.defaultValue(
                  treeNode.font_family,
                  "微软雅黑"
                ),
                disableDepthTestDistance: sgworld.Core.defaultValue(
                  treeNode.disableDepthTestDistance,
                  undefined
                ),
                labelData: treeNode.labelData,
                imageData: treeNode.imageData,
              };
            }
            if (
              treeNode.text &&
              treeNode.image &&
              !treeNode.labelData &&
              !treeNode.imageData
            ) {
              de.labelData = {
                horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
                pixelOffset: new Cesium.Cartesian2(20, 0),
              };
              de.imageData = {
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                pixelOffset: new Cesium.Cartesian2(0, 0),
              };
            }
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
            layer = sgworld.Creator.createLabelImageGeoJsonFeatureLayerProvider(
              treeNode.name,
              urls,
              de,
              "0",
              treeNode.checked,
              function () {}
            );
          } else if (treeNode.class === "polylineVolume") {
            de = {
              id: treeNode.id,
              level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
              level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
              material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
              slttype: "0",
              number: "4",
              exradius: "1",
              inradius: "1",
              orth_width: "2",
              orth_height: "2",
              radius: sgworld.Core.defaultValue(treeNode.radius, 0.5),
              cornerType: "0",
              heightReference: "0",
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              far: sgworld.Core.defaultValue(treeNode.far, 99999999999),
              radiusScale: treeNode.radiusScale,
            };
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
            layer = sgworld.Creator.createVolumeGeoJsonFeatureLayerProvider(
              treeNode.name,
              urls,
              de,
              "0",
              treeNode.checked,
              function () {}
            );
          } else if (treeNode.class === "polyline") {
            de = {
              id: treeNode.id,
              layertype: "polylinelayer",
              level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
              level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
              material: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
              outlineColor: sgworld.Core.defaultValue(
                treeNode.outlineColor,
                "#ffffff"
              ),
              outlineWidth: sgworld.Core.defaultValue(treeNode.outlineWidth, 0),
              height: sgworld.Core.defaultValue(treeNode.height, undefined),
              width: sgworld.Core.defaultValue(treeNode.width, 2),
              clampToGround: sgworld.Core.defaultValue(
                treeNode.clampToGround,
                true
              ),
              classificationType: treeNode.classificationType,
              dash: sgworld.Core.defaultValue(treeNode.dash, false),
              dashLength: sgworld.Core.defaultValue(treeNode.dashLength, 20),
              gapColor: sgworld.Core.defaultValue(
                treeNode.gapColor,
                "rgba(0,0,0,0)"
              ),
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              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 () {}
              );
          } else if (treeNode.class === "polygon") {
            de = {
              id: treeNode.id,
              layertype: "polygonlayer",
              level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
              level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
              material: sgworld.Core.defaultValue(treeNode.color, "#ff0000"),
              heightReference: "1",
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              extrudedHeight: sgworld.Core.defaultValue(
                treeNode.extrudedHeight,
                0
              ),
              extrudedHeightReference: "1",
              clampToGround: sgworld.Core.defaultValue(
                treeNode.clampToGround,
                false
              ),
              classificationType: treeNode.classificationType,
              near: sgworld.Core.defaultValue(treeNode.near, 0),
              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 () {}
              );
          } else if (treeNode.class === "model") {
            de = {
              id: treeNode.id,
              level_min: sgworld.Core.defaultValue(treeNode.minimumLevel, 10),
              level_max: sgworld.Core.defaultValue(treeNode.maximumLevel, 22),
              collect: 0,
              uri: sgworld.Core.defaultValue(treeNode.model, ""),
              file: "",
              color: sgworld.Core.defaultValue(treeNode.color, "#ffffff"),
              scale: sgworld.Core.defaultValue(treeNode.scale, 1),
              heightReference: 0,
              height: sgworld.Core.defaultValue(treeNode.height, 0),
              near: "0",
              far: "99999999999",
            };
            //模型点
            urls.upperLevelLimit = de.level_max;
            urls.lowerLevelLimit = de.level_min;
            layer = sgworld.Creator.createModelGeoJsonFeatureLayerProvider(
              treeNode.name,
              urls,
              de,
              "0",
              treeNode.checked,
              function () {}
            );
          }
          layer && (treeNode.id = layer.treeobj.id);
          break;
        }
        case "terrain":
          layer = sgworld.Creator.createTerrain(
            treeNode.name,
            {
              id: treeNode.id,
              requestVertexNormals: true,
              url: treeNode.urls,
            },
            "0",
            true,
            ""
          );
          break;
        case "sgsterrain":
          layer = sgworld.Creator.sfsterrainprovider(
            treeNode.name,
            {
              id: treeNode.id,
              layerName: treeNode.layer,
              requestVertexNormals: true,
              url: treeNode.urls || "",
              token: treeNode.token,
              cacheUrl: treeNode.cacheUrl,
              cacheLevel: treeNode.cacheLevel,
            },
            "0",
            true,
            ""
          );
          break;
        case "sgsterrain7.1":
          layer = sgworld.Creator.sfsterrainprovider71(
            treeNode.name,
            {
              id: treeNode.id,
              layerName: treeNode.layer,
              requestVertexNormals: true,
              url: treeNode.urls,
              token: treeNode.token,
              cacheUrl: treeNode.cacheUrl,
              cacheLevel: treeNode.cacheLevel,
            },
            "0",
            true,
            ""
          );
          break;
        case "arcgisterrain":
          layer = sgworld.Creator.createArcGISTerrain(
            treeNode.name,
            {
              id: treeNode.id,
              requestVertexNormals: true,
              url: treeNode.urls,
            },
            "0",
            true,
            ""
          );
          break;
        case "CesiumGlobeTerrain":
          layer = sgworld.Creator.createCesiumTerrain(
            treeNode.name,
            {
              id: treeNode.id,
              requestVertexNormals: true,
            },
            "0",
            true,
            ""
          );
          break;
        case "b3dm":
          layer = sgworld.Creator.create3DTilesets(
            treeNode.name,
            treeNode.urls,
            {
              id: treeNode.id,
              Level: treeNode.Level,
              maximumScreenSpaceError:
                treeNode.maximumScreenSpaceError &&
                parseInt(treeNode.maximumScreenSpaceError),
              maximumMemoryUsage:
                treeNode.maximumMemoryUsage &&
                parseInt(treeNode.maximumMemoryUsage),
              geometricError:
                treeNode.geometricError && parseInt(treeNode.geometricError),
            },
            {
              groundCenter: treeNode.Center,
              groundheight: treeNode.modelHeight,
              heading: treeNode.heading,
              pitch: treeNode.pitch,
              roll: treeNode.roll,
              effects: treeNode.effects || false,
              effectsMaxHeight: treeNode.effectsMaxHeight || 150,
              colors: treeNode.alpha
                ? "rgba(255,255,255," + treeNode.alpha + ")"
                : treeNode.color || undefined,
            },
            "0",
            true
          );
          break;
        case "s3m":
          layer = sgworld.Creator.createS3MLayer(
            treeNode.urls,
            sgworld._Viewer.scene,
            function () {}
          );
          break;
        case "gltf":
          var position = [treeNode.lon, treeNode.lat, treeNode.height];
          layer = sgworld.Creator.createModel(
            position,
            treeNode.urls,
            {
              id: treeNode.id,
              scale: treeNode.scale || 1,
              heading: treeNode.heading,
              pitch: treeNode.pitch,
              roll: treeNode.roll,
            },
            "0",
            treeNode.name,
            ""
          );
          break;
        case "SimpleGraphic":
          treeNode.type = treeNode.class;
          layer = sgworld.Creator.SimpleGraphic.addFeature(treeNode);
          break;
        case "videoPolygon":
          layer = sgworld.Creator.addVideoPolygon(treeNode.positions, {
            url: treeNode.url,
            angle: treeNode.angle,
          });
          break;
        case "MilitaryPlotting":
          if (!treeNode.feature.id) {
            treeNode.feature.id = treeNode.id;
          }
          if (!treeNode.feature.name) {
            treeNode.feature.name = treeNode.name;
          }
          layer = sgworld.Creator.MilitaryPlotting.addFeature(treeNode.feature);
          break;
        case "ParticleEffect":
          layer = sgworld.Analysis.createParticleEffect(
            treeNode.name,
            treeNode.position,
            {
              translation: Cesium.Cartesian3.fromElements(0, 0, 0), //平移
            }
          );
          layer.name = treeNode.name;
          break;
        case "FlowField":
          layer = sgworld.Creator.createTrailLine(
            treeNode.positions,
            treeNode.style
          );
          layer.boundingSphere = Cesium.BoundingSphere.fromPoints(
            treeNode.positions
          );
          break;
        case "MobileWall":
          layer = sgworld.Creator.createTrailLineWall(
            treeNode.LineInterpolation.positions,
            treeNode.style
          );
          layer.boundingSphere = Cesium.BoundingSphere.fromPoints(
            treeNode.LineInterpolation.positions
          );
          break;
        case "link":
          layer = sgworld.Creator.createLinkPro(
            sgworld.Core.toDegrees(treeNode.posisitons[0]),
            sgworld.Core.toDegrees(treeNode.posisitons[1]),
            {
              clampToGround: true,
            }
          );
          break;
        case "DiffusionSource":
          layer = sgworld.Analysis.createMultiCircleScan(
            treeNode.position,
            treeNode.maxRadius,
            treeNode.maxRadius.color,
            3000,
            true
          );
          break;
        case "RiskDiffusion":
        case "CircularDiffusion":
          layer = sgworld.Analysis.createCircleScan(
            treeNode.position,
            treeNode.maxRadius,
            treeNode.color,
            3000,
            true
          );
          break;
        case "FanDiffusion":
          layer = sgworld.Analysis.createSectorScan(
            treeNode.position,
            treeNode.distance,
            "#ff0000",
            60,
            treeNode.angle,
            true,
            4000,
            true
          );
          break;
        case "RadarMask":
          layer = sgworld.Creator.createRectangularSensor(
            treeNode.position,
            treeNode.cylinder
          );
          break;
        case "DynamicSatellite":
          let dtwxzsData = sgworld.Creator.createConeRadar(treeNode.position, {
            color: "#7b9ef7",
            radius: 200000,
          });
          let weixin = sgworld.Creator.createModel(
            treeNode.position,
            window.SmartEarthRootUrl + "Workers/Model/weixin.gltf",
            { scale: 15 },
            "0",
            "卫星"
          );
          layer = { dtwxzsData, weixin };
          layer.sourceType = "DynamicSatellite";
          break;
        case "excavate":
          var position = [treeNode.lon, treeNode.lat, treeNode.height];
          layer = sgworld.Creator.createModel(
            position,
            treeNode.urls,
            {
              id: treeNode.id,
              scale: treeNode.scale || 1,
            },
            pID,
            treeNode.name,
            ""
          );
          treeNode.id = layer.treeobj.id;
          break;
      }
      if (treeNode.sourceType !== "gltf" && (treeNode.lon || treeNode.lat)) {
        treeNode.flyTo = [
          treeNode.lon,
          treeNode.lat,
          defaultValue(treeNode.height, 10000),
        ];
      }
      if (treeNode.minx && treeNode.miny && treeNode.maxx && treeNode.maxy) {
        treeNode.flyTo = [
          treeNode.minx,
          treeNode.miny,
          treeNode.maxx,
          treeNode.maxy,
        ];
      }
      if (treeNode.sourceType === "wfs") {
        addTreeData(treeNode, layer);
      }
      if (treeNode.baseLayer) {
        layer.item.baseLayer = true;
      }
    },
    changeplase(value) {
      if (value.label.indexOf("广州") > -1) {
        this.chooseplase = "广州";
        this.form.startTime = new Date("2019-10-08");
        this.form.endTime = new Date("2019-10-16");
        window.Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(
            113.29503528791071,
@@ -163,9 +1889,9 @@
          },
        });
      } else {
        this.chooseplase="上海";
        this.form.startTime=new Date("2016-06-01");
        this.form.endTime=new Date("2016-06-30");
        this.chooseplase = "上海";
        this.form.startTime = new Date("2016-06-01");
        this.form.endTime = new Date("2016-06-30");
        window.Viewer.camera.flyTo({
          destination: Cesium.Cartesian3.fromDegrees(
            121.23142475566037,
@@ -180,44 +1906,44 @@
        });
      }
    },
    change () {
      this.showdata1=false;
    change() {
      this.showdata1 = false;
    },
    change1 () {
      this.showdata2=false;
    change1() {
      this.showdata2 = false;
    },
    openDia () {
      bus.$emit("changeColor",true);
    openDia() {
      bus.$emit("changeColor", true);
    },
    choose (value) {
      let arr=value.split("-");
      this.form.freqStart=arr[0];
      this.form.freqEnd=arr[1];
    choose(value) {
      let arr = value.split("-");
      this.form.freqStart = arr[0];
      this.form.freqEnd = arr[1];
    },
    close () {
      this.showsituation=false;
    close() {
      this.showsituation = false;
    },
    getdata (data) {
      this.colorContainer=data;
    getdata(data) {
      this.colorContainer = data;
    },
    // 点击获得态势
    getTaishi () {
      if(hander) {
    getTaishi() {
      if (hander) {
        return;
      }
      hander=new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      hander = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      let pickFeature;
      // 鼠标点击事件
      hander.setInputAction((event) => {
        // 拾取对象
        divPoint3&&divPoint3.deleteObject();
        let clickPosition=viewer.scene.camera.pickEllipsoid(event.position);
        divPoint3 && divPoint3.deleteObject();
        let clickPosition = viewer.scene.camera.pickEllipsoid(event.position);
        // 转经纬度(弧度)坐标
        let radiansPos=Cesium.Cartographic.fromCartesian(clickPosition);
        let lon=Cesium.Math.toDegrees(radiansPos.longitude);
        let lat=Cesium.Math.toDegrees(radiansPos.latitude);
        let filename=this.nowfile;
        let obj={
        let radiansPos = Cesium.Cartographic.fromCartesian(clickPosition);
        let lon = Cesium.Math.toDegrees(radiansPos.longitude);
        let lat = Cesium.Math.toDegrees(radiansPos.latitude);
        let filename = this.nowfile;
        let obj = {
          lat: lat,
          lng: lon,
          analysisAction: "-1",
@@ -225,14 +1951,14 @@
          filename: filename,
        };
        showCQ(obj).then((res) => {
          let data=res.data;
          if(data!="无数据") {
            divPoint3=sgworld.Creator.createDivPoint(
          let data = res.data;
          if (data != "无数据") {
            divPoint3 = sgworld.Creator.createDivPoint(
              "合肥",
              { lon: obj.lng,lat: obj.lat },
              { lon: obj.lng, lat: obj.lat },
              {
                type: "custom",
                offset: ["c",60],
                offset: ["c", 60],
                description: `
              <div class="divPoint-custom">
                <p>${data}</p>
@@ -245,16 +1971,16 @@
          }
        });
        //把你拾取的东西打印出来看看什么值可以用作判断
      },Cesium.ScreenSpaceEventType.LEFT_CLICK);
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    },
    analysis () {
    analysis() {
      this.reset();
      let that=this;
      if(that.imageid) {
      let that = this;
      if (that.imageid) {
        window.Viewer.entities.removeById(that.imageid);
        that.imageid=null;
        that.imageid = null;
      }
      let data={
      let data = {
        colorName: "-100,0000FF;120,FF0000",
        startTime: "20160601000000",
        endTime: 20160630000000,
@@ -267,38 +1993,38 @@
        analysisAction: "3",
        analysisType: 1,
      };
      data={ ...data,...this.form };
      data.freqStart=data.freqStart*1000000;
      data.freqEnd=data.freqEnd*1000000;
      data.startTime=data.startTime+"000000";
      data.endTime=data.endTime*1000000;
      data.analysisType=="频点"? (data.analysisType=1):"";
      data = { ...data, ...this.form };
      data.freqStart = data.freqStart * 1000000;
      data.freqEnd = data.freqEnd * 1000000;
      data.startTime = data.startTime + "000000";
      data.endTime = data.endTime * 1000000;
      data.analysisType == "频点" ? (data.analysisType = 1) : "";
      delete data.radio;
      if(this.showdata1) {
        data.startTime=20160601000000;
        this.chooseplase&&this.chooseplase=="上海"
          ? (data.startTime=20160601000000)
          :(data.startTime=20191008000000);
      if (this.showdata1) {
        data.startTime = 20160601000000;
        this.chooseplase && this.chooseplase == "上海"
          ? (data.startTime = 20160601000000)
          : (data.startTime = 20191008000000);
      }
      if(this.showdata2) {
        data.endTime=20160630000000;
        this.chooseplase&&this.chooseplase=="上海"
          ? (data.endTime=20160630000000)
          :(data.endTime=20191016000000);
      if (this.showdata2) {
        data.endTime = 20160630000000;
        this.chooseplase && this.chooseplase == "上海"
          ? (data.endTime = 20160630000000)
          : (data.endTime = 20191016000000);
      }
      const loading=that.$loading({
      const loading = that.$loading({
        lock: true,
        text: "计算中",
        spinner: "el-icon-loading",
        background: "rgba(0, 0, 0, 0.7)",
      });
      data.points=data.points.value;
      data.points = data.points.value;
      freqBandAnalysis(data)
        .then((res) => {
          if(res.message==="Success") {
            let points=res.data.imgBounds;
            that.nowfile=Base64.encode(res.data.url)
            var data1={
          if (res.message === "Success") {
            let points = res.data.imgBounds;
            that.nowfile = Base64.encode(res.data.url);
            var data1 = {
              colorSchemes: 1,
              file: Base64.encode(res.data.url),
              maxColor: "FF0000",
@@ -307,10 +2033,10 @@
              minValue: 0,
              showBounds: this.form.points.value,
            };
            data1={ ...data1,...this.colorContainer };
            data1 = { ...data1, ...this.colorContainer };
            createPic(data1)
              .then((res2) => {
                let rectangle=sgworld.Creator.addSimpleGraphic("rectangle",{
                let rectangle = sgworld.Creator.addSimpleGraphic("rectangle", {
                  removeEdit: true,
                  coordinates: Cesium.Rectangle.fromDegrees(
                    points.xmin,
@@ -320,24 +2046,24 @@
                  ),
                  color: "rgba(255,255,255,0.5)",
                  image:
                    "http://221.224.53.36:9081/calc/picurl?file="+
                    "http://221.224.53.36:9081/calc/picurl?file=" +
                    Base64.encode(res2.data),
                });
                that.showDianci=true;
                that.showDianci = true;
                // 图片获取成功  开启拾取
                that.getTaishi();
                if(that.imageid) {
                if (that.imageid) {
                  window.Viewer.entities.removeById(that.imageid);
                  that.imageid=null;
                  that.imageid = null;
                }
                that.imageid=rectangle.id;
                that.imageid = rectangle.id;
                loading.close();
                that.$message({
                  message: "计算成功",
                  type: "success",
                });
                that.showpic=true;
                that.showpic = true;
              })
              .catch((error) => {
                loading.close();
@@ -348,32 +2074,32 @@
          loading.close();
        });
    },
    reset () {
    reset() {
      //重置
      if(this.imageid) {
      if (this.imageid) {
        window.Viewer.entities.removeById(this.imageid);
        hander&&
        hander &&
          hander.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
        hander=null;
        divPoint3&&divPoint3.deleteObject();
        hander = null;
        divPoint3 && divPoint3.deleteObject();
        this.imageid=null;
        this.showDianci=false;
        this.imageid = null;
        this.showDianci = false;
      }
    },
  },
  watch: {
    colorContainer: {
      deep: true,
      handler (data) {
        let colornow={
      handler(data) {
        let colornow = {
          width: "30%",
          height: "70%",
          border: "1px solid #000",
          transform: "translate(40px,90px)",
          backgroundImage: `linear-gradient(${data.maxColor},${data.minColor})`,
        };
        this.innerbac=colornow;
        this.innerbac = colornow;
      },
    },
  },
@@ -431,31 +2157,9 @@
.next {
  width: 89%;
  height: 79%;
  margin: 100px auto;
  margin: 30px auto;
}
.next >>> .el-select {
  width: 95% !important;
}
.next >>> .el-form-item {
  margin-top: 60px;
}
.next >>> .el-input {
  width: 84%;
}
.next >>> .el-date-editor {
  width: 515px;
}
.next >>> .el-form-item__label {
  color: #fff;
  font-size: 40px;
}
.next >>> .el-input__inner {
  font-size: 30px;
}
.next >>> .el-form-item__error {
  font-size: 30px;
  font-weight: 700;
}
.botcon {
  display: inline-block;
  margin-top: 34px;
@@ -496,4 +2200,90 @@
  top: 1200px;
  right: 0px;
}
.layerTreeContainer {
  /* padding: 20px; */
  /* background: url("../../assets/image/listbg.png") no-repeat; */
  /* background-size: 100% 100%; */
  /* position: absolute; */
  /* right: 700px; */
  /* top: 500px; */
  width: 100%;
  height: 100%;
  /* margin: 20px 0; */
}
.layerTreeContainer .layerTree {
  height: 100%;
  margin-bottom: 2px;
  overflow-y: auto;
  overflow-x: auto;
}
.layerTreeContainer .el-tree {
  background: transparent;
  font-size: 45px;
  color: white;
}
.layerTreeContainer .el-tree /deep/ .el-tree-node__content {
  background-color: transparent !important;
  height: auto !important;
}
.layerTreeContainer .el-tree /deep/ .el-tree-node__content:hover {
  background-color: rgba(255, 255, 255, 0.4) !important;
}
.layerTreeContainer .el-tree /deep/ .is-current > .el-tree-node__content {
  background-color: rgba(255, 255, 255, 0.4) !important;
}
.layerTreeContainer
  .el-tree
  /deep/
  .is-indeterminate
  .el-checkbox__inner:before {
  top: 10px;
  height: 19px;
  width: 40px;
}
.layerTreeContainer .el-tree /deep/ .el-tree-node__expand-icon {
  font-size: 40px;
}
.layerTreeContainer .el-tree /deep/ .el-checkbox .el-checkbox__inner {
  width: 40px;
  height: 40px;
}
.layerTreeContainer
  .el-tree
  /deep/
  .el-checkbox__input.is-checked
  .el-checkbox__inner:after {
  border: 7px solid #fff;
  border-left: 0;
  border-top: 0;
  height: 23px;
  left: 11px;
  position: absolute;
  top: 5px;
  width: 10px;
}
.layerTreeContainer
  .el-tree
  /deep/
  .el-checkbox__input
  .is-checked
  .el-checkbox__inner {
  background-color: #409eff;
}
.layerTreeContainer
  .el-tree
  /deep/
  .el-checkbox__input.is-checked
  .el-checkbox__inner {
  border-color: #409eff;
}
</style>