From 6ae4841b48665145aa469d574fbadb988a9c498c Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期四, 27 六月 2024 15:55:17 +0800
Subject: [PATCH] 演示1版本

---
 src/assets/js/map/mapJsonLayer.js |  275 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 257 insertions(+), 18 deletions(-)

diff --git a/src/assets/js/map/mapJsonLayer.js b/src/assets/js/map/mapJsonLayer.js
index 8e3f97c..0105eff 100644
--- a/src/assets/js/map/mapJsonLayer.js
+++ b/src/assets/js/map/mapJsonLayer.js
@@ -17,6 +17,10 @@
   url: null,
   coord: null,
   rectangularSensor: null,
+  targetList: [],
+  linePath: null,
+  richTextPoint1: null,
+  wfsLayer:null,
   init(url) {
     this.url = url;
     this.getJsonLayer();
@@ -73,7 +77,7 @@
     });
   },
   setQyeryData(res) {
-    this.setTitleSetRest();
+    // this.setTitleSetRest();
     if (res.indexOf("娴峰啗闄嗘垬闃�") > -1) {
       this.setQueryExtent2();
     } else if (res.indexOf("鍐涗簨鐩爣") > -1) {
@@ -93,9 +97,28 @@
     encrypt.setPublicKey(modelLayer.publickey + "");
     return encrypt.encrypt(res);
   },
-  setQueryTF2(name) {
-    const obj = "weaponname = '" + name + "'" + "";
+  async setQueryFlywire() {
+    const obj = "ejfl = '缇庣┖鍐涙寚鎸ヤ腑蹇�'" + "";
     const filed = this.getPublickey(obj);
+    const layer = modelLayer.layers.filter((item) => {
+      if (item.name == "寤虹瓚") {
+        return item;
+      }
+    });
+    if (layer.length <= 0) return;
+    const data = getQueryEentity({
+      token: getToken(),
+      start: 1,
+      count: 0,
+      containCount: true,
+      layerid: layer[0].id,
+      dbid: modelLayer.dbid,
+      where: filed
+    });
+  },
+  setQueryTF2(name) {
+    // const obj = "weaponname like '%" + name + "%'" + "";
+    const filed = this.getPublickey(name);
     const layer = modelLayer.layers.filter((item) => {
       if (item.name == "姝﹀櫒鐐�") {
         return item;
@@ -113,9 +136,10 @@
     }).then((response) => {
       if (response.code != 200) return;
       const geom = response.data.items[0];
+
       const position = [geom._x, geom._y, 0];
       const cylinder = {
-        radius: 1000, //鍗婂緞
+        radius: 1500, //鍗婂緞
         angle: 30, //鎵弿瑙掑害锛堝彲閫夛級
         speed: 5, //鍊嶉�燂紙鍙�夛級
         stackPartitions: 80, //妯悜缃戞牸鏁帮紙鍙�夛級
@@ -126,10 +150,44 @@
         position,
         cylinder
       );
-      Viewer.zoomTo(this.rectangularSensor.item);
+      // Viewer.zoomTo(this.rectangularSensor.item);
     });
   },
-  setQueryByFiled(name, color, label) {
+  setQueryByFiled(name, color) {
+    const filed = this.getPublickey(name);
+    var objItem = mapServer.listData.filter((item) => {
+      if (item.type === "Tileset") {
+        return item;
+      }
+    });
+    if (objItem.length <= 0) return;
+    var tileset = objItem[0];
+    getQueryEentity({
+      token: getToken(),
+      start: 1,
+      count: 0,
+      containCount: true,
+      layerid: tileset.layerId,
+      dbid: modelLayer.dbid,
+      where: filed
+    }).then((response) => {
+      if (response.code != 200) return;
+      var std = [];
+      const items = response.data.items;
+      items.map((item) => {
+        std.push(item.seid);
+      });
+      nextTick(() => {
+        if (std.length > 0) {
+          this.setTilesetColorChange(tileset, std, color);
+        }
+      });
+    });
+  },
+  setQueryByFiledList(list, flag) {
+    const result = list[flag];
+    const name = result.name;
+    const color = result.color;
     const obj = "targettype = '" + name + "'" + "";
     const filed = this.getPublickey(obj);
     var objItem = mapServer.listData.filter((item) => {
@@ -152,17 +210,41 @@
       var std = [];
       const items = response.data.items;
       items.map((item) => {
-        if (item.targettype == name) {
-          std.push(item.seid);
-        }
+        // if (item.targettype == name) {
+        std.push(item.seid);
+        // }.
       });
       nextTick(() => {
-        if (std.length <= 0) return;
-        this.setTilesetColorChange(tileset, std, color);
+        if (std.length > 0) {
+          this.targetList.push({
+            ids: std,
+            color: color
+          });
+        }
+        flag = flag + 1;
+
+        if (flag >= list.length) {
+          this.setTilesetColorChangeTarget();
+        } else {
+          this.setQueryByFiledList(list, flag);
+        }
       });
     });
   },
   setTitleSetRest() {
+    this.targetList = [];
+    if(this.wfsLayer){
+      // this.wfsLayer.removeFromMap();
+      this.wfsLayer.destroy();
+    }
+    if (this.linePath) {
+      this.linePath.clear();
+      this.linePath = null;
+    }
+    if (this.richTextPoint1) {
+      this.richTextPoint1.deleteObject();
+      this.richTextPoint1 = null;
+    }
     if (this.rectangularSensor) {
       this.rectangularSensor.wall.forEach((wall) => {
         Viewer.entities.remove(wall);
@@ -193,12 +275,46 @@
           const id = feature.getProperty("id");
           if (ids.indexOf(id) > -1) {
             return new SmartEarth.Cesium.Color.fromCssColorString(color);
-          } else {
-            return new SmartEarth.Cesium.Color.fromCssColorString("#FFFFFF");
           }
         }
       }
     });
+  },
+  setTilesetColorChangeTarget() {
+    var objItem = mapServer.listData.filter((item) => {
+      if (item.type === "Tileset") {
+        return item;
+      }
+    });
+    if (objItem.length <= 0) return;
+    var tileset = objItem[0].layer;
+    const list = this.targetList;
+ 
+    tileset.style = new Cesium.Cesium3DTileStyle({
+      color: {
+        evaluateColor: (feature) => {
+          const id = feature.getProperty("id");
+          for (var i in list) {
+            if (list[i].ids.indexOf(id) > -1) {
+              return new SmartEarth.Cesium.Color.fromCssColorString(
+                list[i].color
+              );
+            }
+          }
+          // if (ids.indexOf(id) > -1) {
+          //   return new SmartEarth.Cesium.Color.fromCssColorString(color);
+          // }
+        }
+      }
+    });
+  },
+  setAddWfsLayer(){
+    this.wfsLayer = earthCtrl.factory.createWfsLayer('polygon', {
+      urls: 'https://cim.smartearth.cn/SEserver/wfsserver/SubicBayWeapon_wfs',
+      layer: 'weapons',
+      outlineColor:'#ff0000',
+      alpha:0,
+    })
   },
   getTileSet() {
     var objItem = mapServer.listData.filter((item) => {
@@ -211,13 +327,13 @@
     }
     return objItem[0];
   },
-  setQueryExtent2() {
+  setQueryExtent2(res, boolen) {
     const tileset = this.getTileSet();
     if (!tileset) {
       return;
     }
-    const obj = "ejfl like '%绌哄啗鍩哄湴%'";
-    const filed = this.getPublickey(obj);
+    //
+    const filed = this.getPublickey(res);
     getQueryEentity({
       token: getToken(),
       start: 1,
@@ -229,10 +345,133 @@
     }).then((response) => {
       if (response.code != 200) return;
       const items = response.data.items[0];
-
-      this.getQueryGeomExtent(items, tileset.layerId);
+      const obj_val = response.data.items.filter((rs) => {
+        if (rs.seid == "1_b810b88e1c7144bcb1c73eb6f45c3cf0") {
+          return rs;
+        }
+      });
+      if (boolen) {
+        this.getQueryGeomExtent(obj_val[0], tileset.layerId);
+      } else {
+        this.getshowQueryExtentLabel(obj_val[0]);
+      }
     });
   },
+  getshowQueryExtentLabel(res) {
+    this.richTextPoint1 = earthCtrl.factory.createRichTextPoint(
+      res.ejfl,
+      [res.lon, res.lat],
+      {
+        fontColor: "#ffff00",
+        fontSize: 18
+      },
+      "0"
+    );
+    const center = { lon: res.lon, lat: res.lat };
+    const cities = [
+      {
+        lon: 120.26923413,
+        lat: 14.7887635155
+      },
+      {
+        lon: 120.266906151,
+        lat: 14.799529948
+      },
+      {
+        lon: 120.267382051,
+        lat: 14.788105695
+      },
+      {
+        lon: 120.26710735,
+        lat: 14.7993756478
+      },
+      {
+        lon: 120.286842844,
+        lat: 14.7924281921
+      },
+      {
+        lon: 120.286923225,
+
+        lat: 14.7933412456
+      },
+      {
+        lon: 120.266707102,
+
+        lat: 14.7996392512
+      },
+      {
+        lon: 120.268701861,
+
+        lat: 14.7886095373
+      },
+      {
+        lon: 120.270684963,
+
+        lat: 14.7919831852
+      },
+      {
+        lon: 120.266265954,
+
+        lat: 14.7999317012
+      },
+      {
+        lon: 120.269896499,
+
+        lat: 14.7901043245
+      },
+      {
+        lon: 120.286600837,
+
+        lat: 14.7926858017
+      },
+      {
+        lon: 120.286991515,
+
+        lat: 14.7927451318
+      },
+      {
+        lon: 120.286760149,
+
+        lat: 14.7930139536
+      },
+      {
+        lon: 120.28633835,
+
+        lat: 14.7929774056
+      },
+      {
+        lon: 120.266684567,
+
+        lat: 14.7877010021
+      },
+      {
+        lon: 120.283448259,
+
+        lat: 14.7972858134
+      },
+      {
+        lon: 120.286503613,
+
+        lat: 14.7932728306
+      },
+      {
+        lon: 120.286649886,
+        lat: 14.7935912152
+      }
+    ];
+    let pathOption = {
+      width: 3, //绾垮锛堝彲閫夛級
+      color: "#00ffff", //绾块鑹诧紙鍙�夛級,
+      LightSpot: true, //鏄惁浣跨敤鍏夌偣鏁堟灉锛堝彲閫夛級
+      LightSpotColor: "#ffffff" ,//鍏夌偣棰滆壊锛堝彲閫夛級
+      height: 100
+    };
+    this.linePath = earthCtrl.factory.createTrailLinePath(
+      center,
+      cities,
+      pathOption
+    );
+  },
   getQueryGeomExtent(items, layerid) {
     var geom = mapConfig.setPointToCrical(items.lon, items.lat, 1);
     const token = getToken();

--
Gitblit v1.9.3