From bc8f0b5301b4a63ff4ddd90bb7732c01bdae3a1a Mon Sep 17 00:00:00 2001
From: 584911253@qq.com <584911253@qq.com>
Date: 星期四, 02 三月 2023 17:52:16 +0800
Subject: [PATCH] 属性点击事件

---
 src/components/MapView/mapSpaceTop.vue |    6 ++
 src/store/index.js                     |    3 +
 src/components/mapsdk.vue              |   39 ++++++++++++++++++-
 src/components/MapView/mapSpacePop.vue |   31 ++++++++++++++-
 4 files changed, 73 insertions(+), 6 deletions(-)

diff --git a/src/components/MapView/mapSpacePop.vue b/src/components/MapView/mapSpacePop.vue
index 3beea60..c08795a 100644
--- a/src/components/MapView/mapSpacePop.vue
+++ b/src/components/MapView/mapSpacePop.vue
@@ -383,7 +383,7 @@
           this.$store.state.primitLayer = null;
         }
         var wkt = this.$wkt.parse(val1);
-        this.setMapLoaction(wkt);
+        this.setMapLoaction(wkt,row);
       }
     },
     handleSizeChange(val) {
@@ -394,7 +394,7 @@
       this.listdata.pageIndex = val;
       this.getSpaceTableLayer();
     },
-    setMapLoaction(res) {
+    setMapLoaction(res,properties) {
       if (this.$store.state.primitLayer != null) {
         sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
         // this.$store.state.primitLayer = null;
@@ -409,6 +409,8 @@
 
         );
         this.$store.state.primitLayer = Viewer.entities.add({
+          properties:properties,
+          tag : "properties_point",
           position: val,
           billboard: {
             // 鍥惧儚鍦板潃锛孶RI鎴朇anvas鐨勫睘鎬�
@@ -429,6 +431,28 @@
         this.$store.state.primitLayer.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
 
         sgworld.Navigate.flyToObj(this.$store.state.primitLayer)
+
+        window.propertieshandler = new Cesium.ScreenSpaceEventHandler(
+            sgworld.Viewer.scene.canvas
+        );
+        window.propertieshandler.setInputAction(event => {
+          let pick = sgworld.Viewer.scene.pick(event.position);
+          // debugger;
+          if (pick && pick.id && pick.id.tag == "properties_point") {
+            this.$store.state.propertiesFlag = '1';
+            let properties = pick.id.properties;
+            let propertyNames = pick.id.properties.propertyNames;
+            let obj = {};
+            this.attributeData.forEach(item => {
+              propertyNames.forEach(itemElement => {
+                if (itemElement == item.field){
+                  obj[item.alias] = properties[itemElement]._value
+                }
+              })
+            })
+            this.$store.state.propertiesInfo = obj;
+          }
+        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
 
       } else if (res.type == 'MultiPolygon' || res.type == 'LineString') {
         var val = res.coordinates[0][0];
@@ -464,6 +488,9 @@
       }
     },
   },
+  destroyed() {
+    this.$store.state.propertiesFlag = null;
+  }
 };
 </script>
 
diff --git a/src/components/MapView/mapSpaceTop.vue b/src/components/MapView/mapSpaceTop.vue
index d621f27..de3cd91 100644
--- a/src/components/MapView/mapSpaceTop.vue
+++ b/src/components/MapView/mapSpaceTop.vue
@@ -149,7 +149,11 @@
     },
     menuTreeCheck(value) {
       this.mapSpaceQueryLayer = value;
-
+      this.layerData.forEach(item => {
+        if (this.menuTopFrom.queryLayer == item.entity){
+          this.$store.state.propertiesName = item.tabDesc;
+        }
+      })
       this.getCheckedNodes();
     },
   },
diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue
index 88b54ab..098015f 100644
--- a/src/components/mapsdk.vue
+++ b/src/components/mapsdk.vue
@@ -8,7 +8,6 @@
         <map-menu-top v-if="$store.state.mapMenuBoxFlag == '1'" />
         <map-space-top v-if="$store.state.mapMenuBoxFlag == '2'" />
       </div>
-
       <div
         class="bufferBox"
         v-if="showBufferBoxDialog"
@@ -340,6 +339,25 @@
           </div>
         </el-card>
       </div>
+      <div class="propertiesPop" v-if="$store.state.propertiesFlag == '1'">
+        <el-card class="box-card">
+          <div slot="header">
+            <span>{{$store.state.propertiesName}}</span>
+            <div style="float: right; cursor: pointer">
+              <i
+                  class="el-icon-close"
+                  @click="closeBufferBox(6)"
+              ></i>
+            </div>
+          </div>
+          <div class="pointInfoBoxContext" style="height:250px;overflow-y: auto">
+            <div style="line-height: 20px" v-for="(value, key) in $store.state.propertiesInfo" :key="key">
+              <span style="font-size: 14px;font-weight: bold;margin-right: 5px">{{key}}:</span>
+              <span>{{value}}</span>
+            </div>
+          </div>
+        </el-card>
+      </div>
       <!--      <div-->
       <!--        @click="changeMenulayer"-->
       <!--        class="center CenDiv"-->
@@ -359,7 +377,6 @@
 import mapMenuTop from "./MapView/mapMenuTop.vue";
 
 import mapSpaceTop from "./MapView/mapSpaceTop.vue";
-
 import {
   select_Comprehensive_ByPageAndCount,
   select_Comprehensive_SelectWktById,
@@ -370,7 +387,6 @@
   name: "",
   components: {
     mapMenuTop,
-
     mapSpaceTop,
   },
   data() {
@@ -751,6 +767,9 @@
           this.showTerrainLevelDialog = false;
           this.clearTerrainLevel()
           break;
+        case 6:
+          this.$store.state.propertiesFlag = null;
+          break;
       }
     },
     //瀹氫綅
@@ -1084,6 +1103,20 @@
       right: 8%;
       bottom: 1%;
     }
+    .propertiesPop{
+      width: 350px;
+      height: 370px;
+      z-index: 40;
+      position: absolute;
+      right: 8%;
+      bottom: 1%;
+      /deep/ .el-card__header{
+        padding: 10px 20px;
+      }
+      /deep/ .el-card__body {
+        padding: 10px 20px;
+      }
+    }
     .terrainLevelBox {
       width: 350px;
       height: 370px;
diff --git a/src/store/index.js b/src/store/index.js
index 2440bed..fc969b2 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -37,6 +37,9 @@
     mapMenuBoxFlag: null,
     mapSpaceQueryLayer: null,
     mapMenuShpFile: null,
+    propertiesFlag: null,
+    propertiesName:null,
+    propertiesInfo:null,
 
     //涓婚鍒囨崲
     theme: variables.theme,

--
Gitblit v1.9.3