From 369d44cc36c599b5ad9d66d78a8d4a18d4575e7a Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 23 五月 2023 17:53:08 +0800
Subject: [PATCH] 1

---
 src/views/Tools/LayerTree.vue |  545 +++++++++++++++++++++++-------------------------------
 1 files changed, 235 insertions(+), 310 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index 69a3552..c46ef63 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -180,7 +180,7 @@
       }
 
       let checkKey = [], checkedLayers = [];
-      var layers = data.result.filter((lyr) => {
+      let layers = data.result.filter((lyr) => {
         if (lyr.url && lyr.type == 2 && lyr.isShow == 1) {
           checkKey.push(lyr.id);
           if (lyr.serveType == "WMS") checkedLayers.push(lyr);
@@ -247,7 +247,7 @@
     showLayerAttribute (data) {
       this.rmListener();
       this.currentData = data ? data : this.currentData;
-      var layer = this.currentData.enName.replaceAll("_", "");
+      let layer = this.currentData.enName.replaceAll("_", "");
       this.$store.state.mapSpaceQueryLayer = layer;
       this.$store.state.showPopBoxFlag = true;
       this.$store.state.mapPopBoxFlag = "2";
@@ -256,7 +256,7 @@
     async positioning () {
       this.rmListener();
       if (["Tileset", "3DML"].indexOf(this.currentData.serveType) > -1) {
-        for (var i in Viewer.scene.primitives._primitives) {
+        for (let i in Viewer.scene.primitives._primitives) {
           if (Viewer.scene.primitives._primitives[i].id == this.currentData.cnName) {
             Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
             break;
@@ -266,10 +266,10 @@
       }
 
       if (["TMS", "DOM", "DEM"].indexOf(this.currentData.serveType) > -1 && this.currentData.pubid) {
-        var data = await comprehensive_selectPubById({ id: this.currentData.pubid });
+        let data = await comprehensive_selectPubById({ id: this.currentData.pubid });
         if (data.result && data.result.geom) {
-          var wkt = this.$wkt.parse(data.result.geom);
-          var height = this.getHeight(wkt.coordinates[2]);
+          let wkt = this.$wkt.parse(data.result.geom);
+          let height = this.getHeight(wkt.coordinates[2]);
           Viewer.camera.flyTo({
             destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), // 2000
           });
@@ -284,7 +284,7 @@
     // 閽诲瓟鏌辩姸鍥�
     async histogram () {
       this.rmListener();
-      var layer = this.currentData.enName.replaceAll("_", "");
+      let layer = this.currentData.enName.replaceAll("_", "");
       this.$store.state.mapSpaceQueryLayer = layer;
       this.$store.state.mapPopBoxFlag = "2";
       this.$store.state.showPopBoxFlag = true;
@@ -292,7 +292,7 @@
     // 閫忔槑搴�
     pellucidity () {
       this.rmListener();
-      for (var j in Viewer.scene.primitives._primitives) {
+      for (let j in Viewer.scene.primitives._primitives) {
         if (Viewer.scene.primitives._primitives[j].id == this.currentData.cnName) {
           this.$store.state.setAlphaDity = this.currentData;
           this.$bus.$emit("showPellucidity", true);
@@ -346,7 +346,7 @@
     getNodes (data, arr) {
       if (data.children) {
         for (let i = 0, c = data.children.length; i < c; i++) {
-          var node = data.children[i];
+          let node = data.children[i];
           if (node.children) {
             this.getNodes(node, arr)
           } else {
@@ -359,10 +359,9 @@
     },
     // 鑾峰彇鑺傜偣ID
     getCheckNodesIds () {
-      var nodes = this.$refs.tree.getCheckedNodes();
-
-      var ids = [];
-      for (var i in nodes) {
+      let nodes = this.$refs.tree.getCheckedNodes();
+      let ids = [];
+      for (let i in nodes) {
         ids.push(nodes[i].id);
       }
 
@@ -370,28 +369,28 @@
     },
     // 鍒囨崲WMS鏈嶅姟
     setChangeWMS (layers, checked) {
-      var value = this.$refs.tree.getCheckedNodes();
+      let value = this.$refs.tree.getCheckedNodes();
       this.$bus.$emit("showMenuLayer", value);
     },
     // 鍒囨崲Tileset
     setChangeTileset (layers, checked) {
       let ids = this.getCheckNodesIds(), arr = [];
-      for (var i in layers) {
-        var layer = layers[i];
+      for (let k in layers) {
+        let layer = layers[k];
         if (ids.indexOf(layer.id) > -1) {
           arr.push(layer);
           continue;
         }
 
-        for (var j in Viewer.scene.primitives._primitives) {
+        for (let j in Viewer.scene.primitives._primitives) {
           if (Viewer.scene.primitives._primitives[j].id == layer.cnName) {
             Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]);
             break;
           }
         }
 
-        var list = this.$store.state.setAlphaList;
-        for (var i = 0; i < list.length; i++) {
+        let list = this.$store.state.setAlphaList;
+        for (let i = 0; i < list.length; i++) {
           if (list[i].name == layer.cnName) {
             list.splice(i, 1);
           }
@@ -402,19 +401,69 @@
     },
     // 娣诲姞Tileset鍥惧眰
     addTilesetLayers (layers) {
-      //
+      for (let i in layers) {
+        let res = layers[i];
+        let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : modelUrl + "/" + res.url;
+
+        let tileset = Viewer.scene.primitives.add(
+          new Cesium.Cesium3DTileset({
+            name: res.cnName,
+            url: url,
+            skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+            baseScreenSpaceError: 1024,
+            maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦
+            skipScreenSpaceErrorFactor: 16,
+            skipLevels: 1,
+            immediatelyLoadDesiredLevelOfDetail: false,
+            loadSiblings: true, // 鑷姩浠庝腑蹇冨紑濮嬭秴娓呭寲妯″瀷锛歠alse
+            cullWithChildrenBounds: true, // 浣跨敤瀛愰」杈圭晫浣撶Н鐨勫苟闆嗘潵鍓旈櫎鍥惧潡锛歵rue
+            cullRequestsWhileMoving: true,
+            cullRequestsWhileMovingMultiplier: 10, // 鍊艰秺灏忚兘澶熸洿蹇殑鍓旈櫎锛�60
+            preloadWhenHidden: true,
+            preferLeaves: true, // 棰勮瀛愯妭鐐癸細false
+            maximumMemoryUsage: 512, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙
+            progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯�
+            dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩
+            dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟
+            dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿
+          })
+        );
+        tileset.readyPromise.then((tileset) => {
+          tileset.id = res.cnName;
+          tileset.layerId = res.id;
+          tileset.pubid = res.pubid;
+
+          if (res.serveType != '3DML') {
+            // Cesium.Matrix4.equals(a,b) 鍒ゆ柇鐭╅樀鏄惁鐩哥瓑锛屾暣涓牴鑺傜偣妯″瀷鐭╅樀锛岃tileSet=>涓栫晫鍧愭爣绯伙紝鍗曚綅鐭╅樀瀵硅绾垮�间负1.0鐨�4*4鐭╅樀
+            if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
+              // 鑾峰彇妯″瀷鐨勪笘鐣屽潗鏍�(绗涘崱灏�)锛孋esium.Matrix4.getTranslation 閫氳繃浠垮皠鍙樻崲鐭╅樀鑾峰彇璇ileSet鐨勪笘鐣屽潗鏍�
+              const transformCenter = Cesium.Matrix4.getTranslation(tileset.root.transform, new Cesium.Cartesian3());
+              // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙妯″瀷鐨勶級
+              const transformCartographic = Cesium.Cartographic.fromCartesian(transformCenter);
+              // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙鎴潰鐨勶級
+              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
+              const height = boundingSphereCartographic.height - transformCartographic.height;
+              // 浠庝竴涓狢artesian3瀵硅薄鐢熸垚Matrix4鍙樻崲鐭╅樀锛堣鍒囬潰鐨勶級
+              window.modelHeight = height;
+            } else {
+              window.modelHeight = 0;
+            }
+            this.setTilesetArgs(tileset, res);
+          }
+        });
+      }
     },
     // 鍒囨崲TMS
     setChangeTMS (layers, checked) {
       let ids = this.getCheckNodesIds(), arr = [];
-      for (var i in layers) {
-        var layer = layers[i];
+      for (let j in layers) {
+        let layer = layers[j];
         if (ids.indexOf(layer.id) > -1) {
           arr.push(layer);
           continue;
         }
 
-        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+        for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
           if (window.Viewer.imageryLayers._layers[i].name == layer.cnName) {
             window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]);
             break;
@@ -424,21 +473,37 @@
 
       if (arr.length) this.addTMSLayers(arr);
     },
-    // 娣诲姞Tile鍥惧眰
+    // 娣诲姞TMS鍥惧眰
     addTMSLayers (layers) {
-      //
+      let url = res.url;
+      if (res.url.indexOf("{host}") != -1) {
+        url = res.url.replace("{host}", iisHost);
+      }
+
+      if (res.pubid) {
+        this.setQueryPubid(res);
+      } else {
+        let layer = Viewer.imageryLayers.addImageryProvider(
+          new Cesium.UrlTemplateImageryProvider({
+            url: url,
+            maximumLevel: 22,
+          })
+        );
+        layer.name = res.cnName;
+        this.setChangeWMS();
+      }
     },
     // 鍒囨崲Mpt
     setChangeMpt (layers, checked) {
       let ids = this.getCheckNodesIds(), arr = [];
-      for (var i in layers) {
-        var layer = layers[i];
+      for (let j in layers) {
+        let layer = layers[j];
         if (ids.indexOf(layer.id) != -1) {
           arr.push(layer);
           continue;
         }
 
-        for (var i in this.mptLayer) {
+        for (let i in this.mptLayer) {
           if (this.mptLayer[i].treeobj.name == layer.cnName) {
             this.mptLayer[i].deleteObject();
             this.mptLayer.splice(i, 1);
@@ -450,229 +515,100 @@
     },
     // 娣诲姞Mpt鍥惧眰
     addMptLayers (layers) {
-      //
+      if (res.url.indexOf("{host}") != -1) {
+        res.url = res.url.replace("{host}", iisHost);
+      }
+      let url = res.url.split(';')
+
+      let layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
+        url: url[0],
+        layers: url[1]
+      }, "0", undefined, true, "");
+      this.mptLayer.push(layer)
+      setTimeout(() => {
+        this.setChangeWMS();
+      }, 500);
     },
     // 鍒囨崲DEM
     setChangeDEM (layers, checked) {
-      let ids = this.getCheckNodesIds(), arr = [], isDel = false;
-      for (var i in layers) {
-        var layer = layers[i];
+      let ids = this.getCheckNodesIds(), arr = [], isDel = false, useSG = false;
+      for (let i in layers) {
+        let layer = layers[i];
         if (ids.indexOf(layer.id) != -1) {
           arr.push(layer.url);
           continue;
         }
 
-        // 鍒犻櫎DEM
-        if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) {
-          isDel = true;
-        }
+        if (window.Viewer.terrainProvider._layers[0].resource._url == layer.url) isDel = true; // 鍒犻櫎DEM
       }
 
-      if (!arr.length && isDel) arr.push(demLayer);
-      if (arr.length) this.addDEMLayers(arr[0]);
+      if (!arr.length && isDel) useSG = true; // demLayer
+      if (arr.length) this.addDEMLayers(arr[0], useSG);
     },
     // 娣诲姞DEM鍥惧眰
-    addDEMLayer (url) {
-      Viewer.terrainLayer = new Cesium.CesiumTerrainProvider({
-        url: url,
-        requestVertexNormals: true
-      });
-    },
-    async setAddLayers (res) {
-      if (res.serveType == "WMS") {
-        var resource = geoServerURl;
-        if (res.resource != null && res.resource != undefined) {
-          resource = res.resource;
-        }
-        var imageryLayers = window.Viewer.scene.imageryLayers;
-        let layerWMS = new Cesium.WebMapServiceImageryProvider({
-          url: resource,
-          layers: res.url,
-          parameters: {
-            transparent: true,
-            format: "image/png",
-            srs: "EPSG:4490",
-            styles: "",
-          },
-          tileWidth: 512,
-          tileHeight: 512,
-        });
-        layerWMS.name = res.cnName;
-        //閫忔槑搴�
-        var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
-        if (res.opacity) {
-          tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
-        }
-        var layer2 = new Image({
-          name: res.cnName,
-          source: new ImageWMS({
-            crossOrigin: "anonymous",
-            url: resource,
-            params: {
-              FORMAT: "image/png",
-              VERSION: "1.1.1",
-              LAYERS: res.url,
-            },
-          }),
-        });
-        if (res.opacity) {
-          layer2.setOpacity(parseInt(res.opacity) / 100);
-        }
-        window.map.addLayer(layer2);
-      } else if (res.serveType == "WFS") {
-        var url =
-          res.resource +
-          "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
-          res.url +
-          "&outputFormat=application%2Fjson";
-        $.ajax({
-          url: url,
-          cache: false,
-          async: true,
-          success: function (data) {
-            var datasource = Cesium.GeoJsonDataSource.load(data, {
-              stroke: Cesium.Color.YELLOW,
-              fill: Cesium.Color.YELLOW.withAlpha(0.1),
-              alpha: 0.1,
-              strokeWidth: 8,
-              clampToGround: true, //鏄惁璐村湴
-            });
-            datasource.then((data) => {
-              data.name = res.cnName;
-              window.Viewer.dataSources.add(data);
-            });
-          },
-          error: function (data) {
-            console.log("error");
-          },
-        });
-        var vectorLayer = new VectorLayer({
-          name: res.cnName,
-          source: new VectorSource({
-            url: url,
-            format: new GeoJSON(),
-          }),
-        });
-        window.map.addLayer(vectorLayer);
-      } else if (res.serveType == "Tileset" || res.serveType == "3DML") {
-        var url;
-        if (res.url.indexOf("{host}") != -1) {
-          url = res.url.replace("{host}", iisHost);
-        } else {
-          url = modelUrl + "/" + res.url
-        }
-        var tileset = Viewer.scene.primitives.add(
-          new Cesium.Cesium3DTileset({
-            name: res.cnName,
-            url: url, //192.168.20.106,to4
-            maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16
-            maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512
-            dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse
-            skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
-          })
-        );
-
-        tileset.readyPromise.then((tileset) => {
-          tileset.id = res.cnName;
-          tileset.layerId = res.id;
-          tileset.pubid = res.pubid;
-          if (res.serveType != '3DML') {
-
-            // Cesium.Matrix4.equals(a,b)鍒ゆ柇涓や釜鍥涚淮鐭╅樀鏄惁鐩哥瓑
-            // 鏁翠釜鏍硅妭鐐规ā鍨嬬煩闃碉紝璇ileSet=>涓栫晫鍧愭爣绯�
-            // 鍗曚綅鐭╅樀锛屽瑙掔嚎鍊间负1.0鐨�4*4鐭╅樀
-            if (!Cesium.Matrix4.equals(tileset.root.transform, Cesium.Matrix4.IDENTITY)) {
-              // 鑾峰彇妯″瀷鐨勪笘鐣屽潗鏍�(绗涘崱灏�)
-              // Cesium.Matrix4.getTranslation 閫氳繃浠垮皠鍙樻崲鐭╅樀鑾峰彇璇ileSet鐨勪笘鐣屽潗鏍�
-              const transformCenter = Cesium.Matrix4.getTranslation(
-                tileset.root.transform,
-                new Cesium.Cartesian3()
-              );
-              // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙妯″瀷鐨勶級
-              const transformCartographic = Cesium.Cartographic.fromCartesian(
-                transformCenter
-              );
-              // 灏嗙瑳鍗″皵鍧愭爣杞崲涓篧GS84缁忕含搴﹀潗鏍囷紙鎴潰鐨勶級
-              const boundingSphereCartographic = Cesium.Cartographic.fromCartesian(
-                tileset.boundingSphere.center
-              );
-              const height = boundingSphereCartographic.height - transformCartographic.height;
-              // 浠庝竴涓狢artesian3瀵硅薄鐢熸垚Matrix4鍙樻崲鐭╅樀锛堣鍒囬潰鐨勶級
-              window.modelHeight = height;
-            } else window.modelHeight = 0;
-            this.getTilesetArgs(tileset, res);
-          }
-        });
-        this.$store.state.setAlphaList.push({
-          name: res.cnName,
-          alpha: 1
-        })
-        window.model = tileset
-      } else if (res.serveType == "TMS") {
-        var url = res.url;
-        if (res.url.indexOf("{host}") != -1) {
-          url = res.url.replace("{host}", iisHost);
-        }
-
-        if (res.pubid) {
-          this.setQueryPubid(res);
-        } else {
-
-          var layer = Viewer.imageryLayers.addImageryProvider(
-            new Cesium.UrlTemplateImageryProvider({
-              url: url,
-              maximumLevel: 22,
-            })
-          );
-          layer.name = res.cnName;
-          this.setChangeWMS();
-        }
-
-      } else if (res.serveType == "Mpt") {
-
-        if (res.url.indexOf("{host}") != -1) {
-          res.url = res.url.replace("{host}", iisHost);
-        }
-        var url = res.url.split(';')
-
-        var layer = sgworld.Creator.createImageryProvider(res.cnName, "wms", {
-          url: url[0],
-          layers: url[1]
-        }, "0", undefined, true, "");
-        this.mptLayer.push(layer)
-        setTimeout(() => {
-          this.setChangeWMS();
-        }, 500);
-      }
-    },
-    async getTilesetArgs (tileset, res) {
-      if (res.pubid > 0) {
-        const data = await comprehensive_selectPubById({ id: res.pubid })
-        if (data.code != 200) {
-          //
-        } else {
-          if (res.serveType != '3DML') {
-            this.reload(tileset, data.result.json)
-          } else {
-            this.tileSet(tileset, parseFloat(res.elev))
-          }
-        }
+    addDEMLayer (url, useSG) {
+      if (useSG) {
+        let option = {
+          url: window.sceneConfig.SGUrl,
+          layerName: window.sceneConfig.mptName,
+          requestVertexNormals: true
+        };
+        window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
       } else {
-        this.tileSet(tileset, parseFloat(res.elev))
+        window.terrainLayer = new Cesium.CesiumTerrainProvider({
+          url: url,
+          requestVertexNormals: true
+        });
       }
+      Viewer.terrainProvider = terrainLayer;
+    },
+    // 璁剧疆Tileset鍙傛暟
+    async setTilesetArgs (tileset, res) {
+      if (res.serveType == '3DML' || !res.pubid) {
+        this.setTilesetHeigth(tileset, parseFloat(res.elev));
+        return;
+      }
+
+      const data = await comprehensive_selectPubById({ id: res.pubid })
+      if (data.code == 200) this.setTilesetCoord(tileset, data.result.json);
+    },
+    // 璁剧疆Tileset楂樺害
+    setTilesetHeigth (tileset, height) {
+      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
+      let boundingSphere = tileset.boundingSphere;
+      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
+      let cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
+      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
+      let Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
+      let Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
+      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
+      let translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
+      //淇敼妯″瀷鐭╅樀
+      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+      // Viewer.flyTo(tileset);
+    },
+    // 璁剧疆Tileset鍧愭爣
+    setTilesetCoord (tileset, json) {
+      let vm = JSON.parse(json);
+      let pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
+      let converter = Cesium.Transforms.eastNorthUpToFixedFrame;
+      let hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
+      let matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
+      tileset._root.transform = matrix;
+      // Viewer.flyTo(tileset);
     },
     async setQueryPubid (res) {
       const data = await comprehensive_selectPubById({ id: res.pubid })
       if (data.code != 200) {
         //
       } else {
-        var url = data.result.url;
+        let url = data.result.url;
         if (res.url.indexOf("{host}") != -1) {
           url = res.url.replace("{host}", iisHost);
         }
-        var min = data.result.min;
-        var max = data.result.max;
-        var layer;
+        let min = data.result.min;
+        let max = data.result.max;
+        let layer;
         if (max > 0) {
           layer = Viewer.imageryLayers.addImageryProvider(
             new Cesium.UrlTemplateImageryProvider({
@@ -692,7 +628,7 @@
 
         layer.name = res.cnName;
         if (data.result.geom) {
-          // var wkt = this.$wkt.parse(data.result.geom);
+          // let wkt = this.$wkt.parse(data.result.geom);
           // Viewer.camera.flyTo({
           //   destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
           // });
@@ -700,46 +636,23 @@
         this.setChangeWMS();
       }
     },
-    reload (tileset, res) {
-      var vm = JSON.parse(res)
-      var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height);
-      var converter = Cesium.Transforms.eastNorthUpToFixedFrame;
-      var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0);
-      var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter);
-      tileset._root.transform = matrix;
-      // Viewer.flyTo(tileset);
-    },
-    tileSet (tileset, height) {
-      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
-      var boundingSphere = tileset.boundingSphere;
-      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
-      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
-      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
-      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
-      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
-      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
-      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
-      //淇敼妯″瀷鐭╅樀
-      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
-      // Viewer.flyTo(tileset);
-    },
     async setproChange (res) {
       if (res) {
         this.setCheeckedLayer = this.$refs.tree.getCheckedKeys();
         this.$store.state.pigCode = res;
-        var st_code = this.optionts.filter(rs => {
+        let st_code = this.optionts.filter(rs => {
           if (rs.code == res) {
             return rs
           }
         })
 
-        var val = this.$store.state.oldTree.filter(rs => {
+        let val = this.$store.state.oldTree.filter(rs => {
           if (rs.enName == st_code[0].code) {
             return rs
           }
         })
         this.removeAllLayer();
-        var obj = {
+        let obj = {
           dirid: res,
           pageIndex: 1,
           pageSize: 10,
@@ -752,29 +665,29 @@
         }
 
         if (data.result[0]) {
-          var geom = data.result[0].geom
+          let geom = data.result[0].geom
           if (geom) {
-            var wkt = this.$wkt.parse(geom)
+            let wkt = this.$wkt.parse(geom)
             Viewer.camera.flyTo({
               destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000),
             });
           }
         }
-        this.cannelTerrainLayer();
-        this.setTerrainMptLayer();
+        //this.cannelTerrainLayer();
+        //this.setTerrainMptLayer();
         //娓呯┖鍥惧眰鏍戦�変腑鐘舵��
         this.$refs.tree.setCheckedKeys([]);
         if (val.length > 0) {
           if (val[0].type == 1 && val[0].isProject == 1) {//椤圭洰鍒嗙被
-            var std_check = [];
-            for (var i in val) {
-              var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], [])
-              for (var j in std_val) {
+            let std_check = [];
+            for (let i in val) {
+              let std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], [])
+              for (let j in std_val) {
                 std_check.push(std_val[j])
               }
             }
-            var value = this.$store.state.isProjectLayer;
-            for (var i in value) {
+            let value = this.$store.state.isProjectLayer;
+            for (let i in value) {
 
               std_check.push(value[i])
             }
@@ -789,50 +702,50 @@
         this.removeAllLayer();
         this.$store.state.pigCode = null;
         this.$refs.tree.setCheckedKeys(this.setCheeckedLayer);
-        var std = [];
-        for (var i in this.setCheeckedLayer) {
+        let std = [];
+        for (let i in this.setCheeckedLayer) {
           std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data)
         }
         this.setProjectLayer(std);
       }
     },
     removeAllLayer () {
-      for (var j in Viewer.scene.primitives._primitives) {
+      for (let j in Viewer.scene.primitives._primitives) {
         Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j])
       }
-      for (var i in window.Viewer.dataSources._dataSources) {
+      for (let i in window.Viewer.dataSources._dataSources) {
         window.Viewer.dataSources.remove(
           window.Viewer.dataSources._dataSources[i]
         );
       }
-      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-        var val_id = window.Viewer.imageryLayers._layers[i].id;
+      for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+        let val_id = window.Viewer.imageryLayers._layers[i].id;
         if (val_id == 'TMS') {
           window.Viewer.imageryLayers.remove(
             window.Viewer.imageryLayers._layers[i]
           );
         }
       }
-      for (var i in this.mptLayer) {
+      for (let i in this.mptLayer) {
         this.mptLayer[i].deleteObject();
         this.mptLayer.splice(i, 1)
       }
       this.mptLayer = [];
     },
     setProjectLayer (res) {
-      var layerid = [];
-      for (var i in res) {
-        layerid.push(res[i].id)
+      let layerid = [];
+      for (let j in res) {
+        layerid.push(res[j].id)
       }
       this.$refs.tree.setCheckedKeys(layerid);
-      // var value = this.$refs.tree.getCheckedNodes();
+      // let value = this.$refs.tree.getCheckedNodes();
       // this.$bus.$emit("showMenuLayer", value);
-      var listWMS = [];
-      var listWFS = [];
-      var listTileset = [];
-      var listTMS = [];
-      var listMpt = [];
-      for (var i in res) {
+      let listWMS = [];
+      let listWFS = [];
+      let listTileset = [];
+      let listTMS = [];
+      let listMpt = [];
+      for (let i in res) {
         if (res[i].type == 2) {
           switch (res[i].serveType) {
             case 'WMS':
@@ -871,43 +784,55 @@
       }
       return result
     },
-    cannelTerrainLayer () {
-      //娓呯┖鍦板舰
-      if (window.terrainMptLayer) {
-        window.terrainMptLayer.deleteObject();
-        window.terrainMptLayer = null;
-      }
-      if (window.terrainDemLayer) {
-        Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
-        window.terrainDemLayer = null;
-      }
-    },
-    setTerrainMptLayer () {
-      // //榛樿鍦板舰MPT
-      // var option = {
-      //   url: window.sceneConfig.SGUrl,
-      //   layerName: window.sceneConfig.mptName,
-      //   requestVertexNormals: true,
-      // };
-      // window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, "");
-      window.terrainDemLayer = new Cesium.CesiumTerrainProvider({
-        // url: LFData + '/3d/terrain/dem20230321'
-        url: demLayer
-      });
-      Viewer.terrainProvider = window.terrainDemLayer
-    },
     setChangeProLayer () {
-      var value = this.$store.state.isProjectLayer;
+      let value = this.$store.state.isProjectLayer;
       if (value.length != 0) {
 
-        var std = [];
-        for (var i in value) {
+        let std = [];
+        for (let i in value) {
           std.push(value[i].id)
         }
         this.$refs.tree.setCheckedKeys(std);
         this.$bus.$emit("showMenuLayer", value);
       }
     },
+    // 娣诲姞WFS鍥惧眰 *
+    addWFSLayers (res) {
+      let url =
+        res.resource +
+        "?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
+        res.url +
+        "&outputFormat=application%2Fjson";
+      $.ajax({
+        url: url,
+        cache: false,
+        async: true,
+        success: function (data) {
+          let datasource = Cesium.GeoJsonDataSource.load(data, {
+            stroke: Cesium.Color.YELLOW,
+            fill: Cesium.Color.YELLOW.withAlpha(0.1),
+            alpha: 0.1,
+            strokeWidth: 8,
+            clampToGround: true, //鏄惁璐村湴
+          });
+          datasource.then((data) => {
+            data.name = res.cnName;
+            window.Viewer.dataSources.add(data);
+          });
+        },
+        error: function (data) {
+          console.log("error");
+        },
+      });
+      let vectorLayer = new VectorLayer({
+        name: res.cnName,
+        source: new VectorSource({
+          url: url,
+          format: new GeoJSON(),
+        }),
+      });
+      window.map.addLayer(vectorLayer);
+    }
   },
 };
 </script>

--
Gitblit v1.9.3