北京经济技术开发区经开区虚拟城市项目-【前端】-Web
lixuliang
2024-02-04 63e2b53fd06a00e8a6ffbd132bb305470325a900
src/components/menu/tools/special.vue
@@ -243,6 +243,7 @@
import { roman } from "../../../assets/json/index.js";
import URLInCode from "@/assets/js/urlInCode";
import keyName from "@/utils/poiKeys";
import LayerField from "@/utils/NameConf";
let handler;
let tooltipHTML;
window.divPoint1 = null;
@@ -577,13 +578,11 @@
    },
    setCesuimHandle() {
      var that = this;
      Bus.$on("clearSelectObject", this.clearSelectObject);
      handler && handler.destroy();
      handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
      handler.setInputAction((event) => {
        let nPickFeature = sgworld.Viewer.scene.pick(event.position);
        if (Cesium.defined(nPickFeature)) {
          this.resetImg();
          if (buildingPolygon) {
@@ -599,9 +598,9 @@
            // console.log(nPickFeature);
            imgUrl = nPickFeature.primitive.image;
            scale = nPickFeature.primitive.scale;
            nPickFeature.primitive.scale = 1;
            nPickFeature.primitive.image =
              window.SmartEarthRootUrl + "Workers/image/point.png";
            nPickFeature.primitive.scale = 1;
            //点击弹框
            let obj = {};
            let lon;
@@ -640,15 +639,46 @@
            }
            if (!isCamera) {
              tooltipHTML = "";
              //重置LayerField数据
              for (let item in LayerField) {
                LayerField[item] = 0;
              }
              // 删除字段
              let { OBJECTID, ID, BZDZ, Latitude, Longtitude, ...userData } =
                obj;
              for (let i in userData) {
                let value = userData[i];
                let name = keyName[i] || i;
                value && (tooltipHTML += `<p>${name}:${value || "无"}</p>`);
                console.log(tooltipHTML);
              // 判断展示的类型
              if (
                userData.hasOwnProperty("部件名称") ||
                userData.hasOwnProperty("井编号")
              ) {
                //修改LayerField数据
                for (let itemName in userData) {
                  let CnName = keyName[itemName] || itemName;
                  if (LayerField.hasOwnProperty(CnName)) {
                    LayerField[CnName] = userData[itemName];
                    if (CnName == "经度" || CnName == "纬度") {
                      let str = Number(LayerField[CnName]);
                      LayerField[CnName] = str.toFixed(6);
                    }
                  }
                }
                // 展示LayerField数据
                for (let item in LayerField) {
                  let value = LayerField[item];
                  value && (tooltipHTML += `<p>${item}:${value || "无"}</p>`);
                }
              } else {
                // 直接展示
                for (let itemName in userData) {
                  let value = userData[itemName];
                  let CnName = keyName[itemName] || itemName;
                  value &&
                    (tooltipHTML += `<p>${CnName}:${value || "无"}</p>`);
                  console.log(tooltipHTML);
                }
              }
              let description = `
                   <div id="pointInfoBox" class="pointInfoBox" style="pointer-events:auto;">
                    <span style="position: absolute; right: 12px; top: 6px;">×</span>
@@ -758,6 +788,55 @@
                  );
                }
              });
          } else if (
            nPickFeature.id.fid &&
            nPickFeature.id.fid.includes("免费住所空间0131")
          ) {
            let obj = nPickFeature.id.attributes;
            let lon = 116.50592;
            let lat = 39.798999;
            if (divPoint1) {
              divPoint1.deleteObject();
            }
            tooltipHTML = "";
            //重置LayerField数据
            for (let item in LayerField) {
              LayerField[item] = 0;
            }
            // 删除字段
            let { Id, ...userData } = obj;
            // 直接展示
            for (let itemName in userData) {
              let value = userData[itemName];
              let CnName = keyName[itemName] || itemName;
              value && (tooltipHTML += `<p>${CnName}:${value || "无"}</p>`);
            }
            let description = `
                   <div id="pointInfoBox" class="pointInfoBox" style="pointer-events:auto;">
                    <span style="position: absolute; right: 12px; top: 6px;">×</span>
                    ${tooltipHTML}
                  </div>
                `;
            divPoint1 = sgworld.Creator.createDivPoint(
              "详细信息",
              {
                lon: lon,
                lat: lat,
                height: 50,
              },
              {
                type: "custom",
                offset: ["c", 50],
                description,
                onclick(data) {
                  divPoint1 && divPoint1.deleteObject();
                },
              }
            );
            //关闭地块信息弹窗
            Bus.$emit("closeLandInfoPop", true);
            layuiLayer.close(SmartEarthPopupData.layerProp);
            this.$store.commit("description", obj);
          }
          // else if (nPickFeature.primitive instanceof Cesium.GroundPrimitive) {
          //   let wmsLayer = this.$store.state.selectedLayers.filter((item) => {