管道基础大数据平台系统开发-【前端】-新系統界面
584911253@qq.com
2023-03-14 b41b6bcda8d085b0c9b0f3d176e76fbed97557a8
src/views/Synthesis/LeftMenu.vue
@@ -251,8 +251,8 @@
  comprehensive_deletes,
  comprehensive_selectModelByPageAndCount,
  comprehensive_insertModel,
  comprehensive_updateModel
} from "../../api/api.js";
  comprehensive_updateModel, selectByBuffer
} from '../../api/api.js'
import {
  OverviewMap,
  defaults as defaultControls,
@@ -471,6 +471,12 @@
            name: "空间查询",
            css: "twoMenu_imge52",
          },
          {
            id: "e3",
            label: "synthesis.pickup",
            name: "拾取",
            css: "twoMenu_imge52",
          },
        ],
        [
          {
@@ -667,7 +673,9 @@
        value: '其他模型',
        label: '其他模型'
      }],
      targetY: 0.0,
      modelClip:false,
      clippingPlanes:null,
      showPickUp:false,
    };
  },
  methods: {
@@ -1383,12 +1391,30 @@
    setIquery(res) {
      switch (res) {
        case "e2":
          Viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
          this.$store.state.mapMenuBoolean = !this.$store.state.mapMenuBoolean;
          this.$store.state.mapMenuBoxFlag = "1";
          break;
        case "e1":
          Viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
          this.$store.state.mapMenuBoolean = !this.$store.state.mapMenuBoolean;
          this.$store.state.mapMenuBoxFlag = "2";
          break;
          //拾取功能
        case "e3":
          this.$store.state.mapMenuBoolean = false;
          this.showPickUp = !this.showPickUp;
          if (this.showPickUp){
            let that = this;
            Viewer.screenSpaceEventHandler.setInputAction(function (event) {
              let p = sgworld.Navigate.getMouseDegrees(event);
              console.log(p);
              that.getPickUpData(p);
            }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
          }else {
            this.$refs.queryinfo.closeAll();
            Viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
          }
          break;
      }
    },
@@ -1519,26 +1545,33 @@
          //   window.MXModel=null;
          // } else {
          var that = this;
          if (window.model){
            that.modelClipping();
          }else {
            var tileset = Viewer.scene.primitives.add(
                new Cesium.Cesium3DTileset({
                  name: res.cnName,
                  url: modelUrl+ "/tileset/m/SN/tileset.json",
                  maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
                  maximumMemoryUsage: 768, // 最大内存:512
                  dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
                  skipLevelOfDetail: true, // 在遍历时候跳过详情:false
                })
            );
            tileset.readyPromise.then((tileset) => {
              tileset.id = res.cnName;
              tileset.layerId = res.id;
              Viewer.flyTo(tileset);
          that.modelClip = !that.modelClip;
          if (that.modelClip){
            if (window.model){
              that.modelClipping();
            });
            window.model = tileset
            }
            else {
              var tileset = Viewer.scene.primitives.add(
                  new Cesium.Cesium3DTileset({
                    name: res.cnName,
                    url: modelUrl+ "/tileset/m/SN/tileset.json",
                    maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
                    maximumMemoryUsage: 768, // 最大内存:512
                    dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
                    skipLevelOfDetail: true, // 在遍历时候跳过详情:false
                  })
              );
              tileset.readyPromise.then((tileset) => {
                tileset.id = res.cnName;
                tileset.layerId = res.id;
                Viewer.flyTo(tileset);
                that.modelClipping();
              });
              window.model = tileset
            }
          }
          else {
            Viewer.entities.removeAll();
          }
          // window.model = sgworld.Creator.create3DTilesets(
          //   "",
@@ -1722,9 +1755,10 @@
        planes: [ // ClippingPlane对象数组集合
          new Cesium.ClippingPlane( // 裁切面
              new Cesium.Cartesian3(0.0, 0.0, -1.0), // 法线方向
              0.0 // 原点到平面的最短距离,设置0就好
              0// 原点到平面的最短距离,设置0就好
          ),
        ],
        enabled:true,
        edgeWidth: 1.0, // 模型被裁切部分的截面线宽
      });
      let boundingSphere = window.model.boundingSphere;
@@ -1750,6 +1784,7 @@
        });
        planeEntities.push(planeEntity);
      }
      this.clippingPlanes = clippingPlanes;
      window.model.clippingPlanes = clippingPlanes;
      // Select plane when mouse down
@@ -2385,6 +2420,34 @@
    handleAttatchChange(val) {
      this.attacgSelection = val;
    },
    //拾取数据获取
    async getPickUpData(info){
      let checkedLayers = JSON.parse(sessionStorage.getItem("checkedLayers"));
      let showPop = false;
      for (const item of checkedLayers) {
        let name = item.url.replaceAll("LF:","");
        name = name.replaceAll("_","");
        let params = {
          buffer:10,
          limit:20,
          name:name,
          wkt:`POINT (${info.lon} ${info.lat})`,
        }
        const res = await selectByBuffer(params);
        if (res.result && res.result.length > 0){
          this.$store.state.mapPopBoxFlag = "4";
          this.$store.state.pickUpPointInfo = info;
          this.$refs &&
          this.$refs.queryinfo &&
          this.$refs.queryinfo.open("拾取分析", null,);
          showPop = true;
          break;
        }
      }
      if (!showPop){
        this.$message.warning("暂无数据!");
      }
    }
  },
  mounted() {
    this.measureData = new Map();