From 9c2cad000f9279969e76bfc206a7acbb8acc9079 Mon Sep 17 00:00:00 2001
From: lixuliang <lixuliang_hd@126.com>
Date: 星期一, 10 二月 2025 14:38:32 +0800
Subject: [PATCH] Merge branch 'master' of http://103.135.160.14:9034/r/PM20221203225_Web

---
 src/components/menu/tools/special.vue |  644 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 532 insertions(+), 112 deletions(-)

diff --git a/src/components/menu/tools/special.vue b/src/components/menu/tools/special.vue
index d831e0e..9a0ac40 100644
--- a/src/components/menu/tools/special.vue
+++ b/src/components/menu/tools/special.vue
@@ -32,11 +32,17 @@
 
       <div class="specialTool" @click="qytj">
         <el-tooltip class="item" effect="dark" content="鏁版嵁姹囪仛" placement="top-start" popper-class="item_tooltip">
-          <el-button> <img src="@/assets/img/left/ztfx/yqfk.png" /> </el-button></el-tooltip>
+          <el-button>
+            <img src="@/assets/img/left/ztfx/yqfk.png" />
+          </el-button>
+        </el-tooltip>
       </div>
       <div class="specialTool" @click="rangeQuery()">
         <el-tooltip class="item" effect="dark" content="鑼冨洿鏌ヨ" placement="top-start" popper-class="item_tooltip">
-          <el-button> <img src="@/assets/img/left/ztfx/sjxq.png" /> </el-button></el-tooltip>
+          <el-button>
+            <img src="@/assets/img/left/ztfx/sjxq.png" />
+          </el-button>
+        </el-tooltip>
       </div>
       <!-- <div class="specialTool" @click="guanxian(openGX)">
         <el-tooltip
@@ -48,7 +54,7 @@
         >
           <el-button> <img src="@/assets/img/left/ztfx/spl.png" /> </el-button
         ></el-tooltip>
-      </div> -->
+      </div>-->
       <!-- <div class="specialTool" @click="sceneRoaming">
         <el-tooltip
           class="item"
@@ -60,7 +66,7 @@
           <el-button>
             <img src="@/assets/img/left/ztfx/rkqxksh.png" /> </el-button
         ></el-tooltip>
-      </div> -->
+      </div>-->
 
       <!-- <div class="specialTool" @click="shipinronghe(videoList)">
         <el-tooltip
@@ -72,7 +78,7 @@
         >
           <el-button> <img src="@/assets/img/left/ztfx/spl.png" /> </el-button
         ></el-tooltip>
-      </div> -->
+      </div>-->
     </div>
   </div>
 </template>
@@ -186,28 +192,47 @@
   background: rgba(0, 168, 255, 0.16);
 }
 </style>
-
+<style>
+#pointInfoBox {
+  width: 500px;
+  padding: 20px;
+  text-align: left;
+  background: url("~@/assets/img/new/listbg.png") 100%/100%;
+  /* border: 5px #08235f solid; */
+  /* border-radius: 7px; */
+  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.5);
+  color: #fff;
+}
+</style>
 <script>
+import Vue from "vue";
+import store from "@/utils/store";
+import poiLayer from "@/components/poplayer/main";
+import rpc from "@/assets/js/rpc";
+import mapData from "../../../../static/mapData";
+import mapMsg from "@/assets/js/mapMsg";
+import vueEvents from "@/utils/vueEvent.js";
+let PoiLayerConstructor = Vue.extend(poiLayer);
+
 import axios from "axios";
 import { mapState, mapMutations } from "vuex";
 import Bus from "../../tools/Bus";
 import { roman } from "../../../assets/json/index.js";
 import URLInCode from "@/assets/js/urlInCode";
-let handler;
-let pickFeature;
+import keyName from "@/utils/poiKeys";
+import LayerField from "@/utils/NameConf";
+
+let handler, buildingPolygon, objdata = {}, video, promiseS3M;
+window.divPoint3 = null;
+window.instance = null;
 let tooltipHTML;
-let divPoint1;
-let imgUrl;
-let scale;
 let tooltip;
-let lineArr = [];
-let video;
-let video2;
-let video3;
-let video4;
-let promiseS3M;
+window.divPoint1 = null;
+window.pickFeature = null;
+window.imgUrl = null;
+window.scale = null;
 //浜ら�氬浘灞�
-let panoramaLayer;
+window.panoramaLayer = null;
 export default {
   name: "special",
   data() {
@@ -217,7 +242,7 @@
       romanOption: [
         { name: "鏍稿績鍖�" },
         { name: "鏅缁垮湴" },
-        { name: "鏀垮姟鏈嶅姟" },
+        { name: "鏀垮姟鏈嶅姟" }
       ],
       showFlag: false,
       showQYTJ: false,
@@ -239,8 +264,8 @@
           alpha: 1,
           // 閫忔槑搴�
           far: 3000,
-          cameraIndexCode: "2b046ef675704975a8d45f1b00cd946b",
-        },
+          cameraIndexCode: "2b046ef675704975a8d45f1b00cd946b"
+        }
         // {
         //   name: "video3",
         //   lon: 116.5146339,
@@ -311,12 +336,12 @@
       alpha: 1,
       // 閫忔槑搴�
       far: 166,
-      videoarrList: [],
+      videoarrList: []
     };
   },
   computed: {
     ...mapState(["viewer1Show", "yqfk", "cesiumInit"]),
-    ...mapState(["viewer1Show", "yqfk", "qyEchartsShow"]),
+    ...mapState(["viewer1Show", "yqfk", "qyEchartsShow"])
   },
   mounted() { },
   watch: {
@@ -337,8 +362,8 @@
         }
       },
       deep: true,
-      immediate: true,
-    },
+      immediate: true
+    }
   },
   methods: {
     // ...mapMutations(["setViewer1Show", "setYqfk"]),
@@ -350,9 +375,9 @@
           0.0001: "rgb(0,191,255)",
           0.001: "rgb(0,128,0)",
           0.01: "rgb(255,165,0)",
-          0.1: "rgb(255,0,0)",
+          0.1: "rgb(255,0,0)"
         },
-        style: "clustering",
+        style: "clustering"
       });
 
       window.sxtkGeojson.dataSource.clustering.minimumClusterSize = 5;
@@ -360,10 +385,10 @@
       let url;
       axios
         .get(url)
-        .then((data) => {
+        .then(data => {
           // console.log(data);
           let features = data.data.features;
-          features.forEach((feature) => {
+          features.forEach(feature => {
             let geom = feature.geometry.coordinates;
             let properties = feature.properties;
             let point = new SmartEarth.Degrees(geom[0], geom[1]);
@@ -372,7 +397,7 @@
             // };
 
             let entitie = window.sxtkGeojson.add(point, {
-              image: SmartEarthRootUrl + "Workers/image/sxt.png",
+              image: SmartEarthRootUrl + "Workers/image/sxt.png"
             });
             entitie.properties = properties;
             entitie.tag = "sxt";
@@ -382,7 +407,7 @@
           window.sxthandler = new Cesium.ScreenSpaceEventHandler(
             sgworld.Viewer.scene.canvas
           );
-          window.sxthandler.setInputAction((event) => {
+          window.sxthandler.setInputAction(event => {
             let pick = sgworld.Viewer.scene.pick(event.position);
             if (pick && pick.id && pick.id.tag == "sxt") {
               //鍏抽棴鍦板潡淇℃伅寮圭獥
@@ -422,13 +447,13 @@
                     sgworld.drawObj &&
                       sgworld.drawObj.end &&
                       sgworld.drawObj.end("cancel");
-                  },
-                },
+                  }
+                }
               });
             }
           }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
         })
-        .catch((err) => {
+        .catch(err => {
           console.log(err);
         });
     },
@@ -466,8 +491,8 @@
           {
             url: urls,
             queryParameters: {
-              layers: "",
-            },
+              layers: ""
+            }
           },
           {},
           "0",
@@ -477,7 +502,7 @@
         window.panoramaHandler = new Cesium.ScreenSpaceEventHandler(
           Viewer.scene.canvas
         );
-        window.panoramaHandler.setInputAction((event) => {
+        window.panoramaHandler.setInputAction(event => {
           let p;
           p = sgworld.Navigate.getMouseDegrees(event);
           let panorama = new yzPanorama();
@@ -485,13 +510,13 @@
             id: "qjMap",
             closeId: "panoramaClose",
             lng: p.lon,
-            lat: p.lat,
+            lat: p.lat
           });
 
           // let StreetUrl = "http://10.10.4.116:8085/yzAdapter/";
           // let _StreetscapeYZ = new StreetscapeYZ(sgworld, {
           //   StreetUrl: StreetUrl,
-          //   lon: p.lon,
+          //     lng: p.lon,
           //   lat: p.lat
           // });
         }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
@@ -521,34 +546,46 @@
       }
     },
     clearSelectObject() {
-      if (pickFeature && pickFeature.primitive) {
-        pickFeature.primitive.image = imgUrl;
-        pickFeature.primitive.scale = scale;
-        pickFeature = null;
+      if (window.pickFeature && window.pickFeature.primitive) {
+        window.pickFeature.primitive.image = imgUrl;
+        window.pickFeature.primitive.scale = scale;
+        window.pickFeature = null;
       }
     },
     setCesuimHandle() {
+      var that = this;
       Bus.$on("clearSelectObject", this.clearSelectObject);
       handler && handler.destroy();
       handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
-      handler.setInputAction((event) => {
+      handler.setInputAction(event => {
         let nPickFeature = sgworld.Viewer.scene.pick(event.position);
+        console.log(nPickFeature);
         if (Cesium.defined(nPickFeature)) {
+          this.resetImg();
+          if (buildingPolygon) {
+            sgworld.Creator.DeleteObject(buildingPolygon);
+            buildingPolygon = null;
+          }
+          if (tooltip) {
+            tooltip.show(false);
+            tooltip = null;
+          }
           if (nPickFeature.primitive instanceof Cesium.Billboard) {
             if (nPickFeature.id.length > 0) {
               return;
             }
-            this.resetImg();
-            this.resetBorder();
-            pickFeature = nPickFeature;
+            // this.resetBorder();
+            window.pickFeature = 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;
             //鐐瑰嚮寮规
+
+            objdata = {}
             let obj = {};
-            let lng;
+            let lon;
             let lat;
             let isCamera = false;
             if (nPickFeature.id.tag) {
@@ -556,72 +593,255 @@
               let propertyNames = nPickFeature.id.properties.propertyNames;
               if (propertyNames.indexOf("鐩戞帶鍚�") !== -1) {
                 isCamera = true;
-                // obj["JK鍚嶇О"] = properties["JK鍚嶇О"]._value;
+                obj["JK鍚嶇О"] = properties["JK鍚嶇О"]._value;
                 // obj["JK绫诲瀷"] = properties["JK绫诲瀷"]._value;
                 // obj["鍔熻兘"] = properties["鍔熻兘"]._value;
                 // obj["鎵�鍦ㄥ尯"] = properties["鎵�鍦ㄥ尯"]._value;
                 // obj["JK缂栧彿"] = properties["JK缂栧彿"]._value;
-                // obj["JK鍐呯爜"] = properties["JK鍐呯爜"]._value;
+                obj["JK鍐呯爜"] = properties["JK鍐呯爜"]._value;
               } else {
-
-                propertyNames.forEach((item) => {
+                propertyNames.forEach(item => {
                   obj[item] = properties[item]._value;
                 });
               }
 
-              let cartographic =
-                window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
-                  nPickFeature.id.position._value
-                );
-              lng = Cesium.Math.toDegrees(cartographic.longitude);
+              let cartographic = window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
+                nPickFeature.id.position._value
+              );
+              lon = Cesium.Math.toDegrees(cartographic.longitude);
               lat = Cesium.Math.toDegrees(cartographic.latitude);
             } else {
               obj = nPickFeature.id.attributes;
-              lng = nPickFeature.id.positions[0];
+              lon = nPickFeature.id.positions[0];
               lat = nPickFeature.id.positions[1];
+            }
+            if (divPoint1) {
+              divPoint1.deleteObject();
             }
             if (!isCamera) {
               tooltipHTML = "";
-              // console.log(obj);
-
-              for (let i in obj) {
-                let value = obj[i];
-                value && (tooltipHTML += `<p>${i}锛�${value || "鏃�"}</p>`);
+              //閲嶇疆LayerField鏁版嵁锛堢浜曞拰閮ㄤ欢灞曠ず鐨勫瓧娈佃〃锛�
+              for (let item in LayerField) {
+                LayerField[item] = 0;
               }
-
-              if (tooltip) {
-                tooltip.show(false);
-                tooltip = null;
+              // 鍒犻櫎涓嶉渶瑕佺殑瀛楁 鍓╀笅淇濆瓨涓簎serData
+              let {
+                OBJECTID,
+                ID,
+                BZDZ,
+                Latitude,
+                Longtitude,
+                ...userData
+              } = obj;
+              // 鍒ゆ柇灞曠ず鐨勭被鍨�
+              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) {
+                  LayerField[item] && (objdata[item] = LayerField[item])
+                  // (tooltipHTML += `<p>${item}锛�${LayerField[item] || "鏃�"}</p>`);
+                }
+              } else if (
+                userData.hasOwnProperty("褰撲簨浜哄悕绉�") ||
+                userData.hasOwnProperty("妗堜欢缂栧彿")
+              ) {
+                //淇敼LayerField鏁版嵁
+                let newOBJ = {
+                  褰撲簨浜哄悕绉�: userData["褰撲簨浜哄悕绉�"],
+                  妗堜欢缂栧彿: userData["妗堜欢缂栧彿"],
+                  妗堜欢鍚嶇О: userData["妗堜欢鍚嶇О"],
+                  绔嬫鏃堕棿: userData["绔嬫鏃堕棿"],
+                  浣忔墍: userData["浣忔墍"],
+                  妗堜欢鏉ユ簮: userData["妗堜欢鏉ユ簮"],
+                  鍔炴閮ㄩ棬: userData["鍔炴閮ㄩ棬"],
+                  鍔炴浜哄憳: userData["鍔炴浜哄憳"],
+                  璋冩煡鎯呭舰: userData["璋冩煡鎯呭舰"]
+                };
+                objdata = newOBJ
+              } else {
+                for (let itemName in userData) {
+                  let CnName = keyName[itemName] || itemName;
+                  userData[itemName] && (objdata[CnName] = userData[itemName])
+                  // (tooltipHTML += `<p style="margin-top:7px;">${itemName}锛�${ userData[itemName] ||
+                  //   "鏃�"}</p>`);
+                }
               }
-              tooltip = sgworld.Core.CreateResultTooltip(window.Viewer, {
-                color: "black",
-                addY: -40,
-                far: 200000,
-                closeBtn: true,
-                close: () => {
-                  this.resetImg();
-                  this.resetBorder();
+              divPoint3 && divPoint3.deleteObject();
+              store.setPoplayerShowAction(false);
+              store.setPoplayerListAction({});
+              store.setPoplayerShowAction(true);
+              store.setPoplayerListAction(objdata);
+              window.instance = new PoiLayerConstructor({
+                data: {
+                  list: objdata,
                 },
               });
-
-              let description = `<div style='background: 
-                                      rgba(14, 50, 143, 0.6);
-                                      border: 1px solid #205fbc;
-                                       border-radius: 5px;
-                                       color: #fff;
-                                       padding: 15px;  
-                                       box-shadow: 0px 1px 10px 0px rgba(3, 10, 26, 0.38);
-                                       '>${tooltipHTML}</div>`;
-
-              tooltip.showAt(
-                Cesium.Cartesian3.fromDegrees(lng, lat, 0),
-                description
+              window.instance.$mount();
+              divPoint3 = window.sgworld.Creator.createDivPoint(
+                "",
+                {
+                  lon: lon,
+                  lat: lat,
+                  height: 50,
+                },
+                {
+                  type: "custom",
+                  offset: ["c", 100],
+                  description: window.instance.$el,
+                  near: 0,
+                  far: 100000,
+                }
               );
             }
             //鍏抽棴鍦板潡淇℃伅寮圭獥
             Bus.$emit("closeLandInfoPop", true);
             layuiLayer.close(SmartEarthPopupData.layerProp);
+            //鍙戦�佺粰right-top.vue璋冪敤
             this.$store.commit("description", obj);
+          }
+
+          else if (nPickFeature.id &&
+            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 = "";
+            // 鍒犻櫎瀛楁
+            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.Cesium3DTileset) {
+            // let cartographic =
+            //   window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
+            //     nPickFeature.content.tile.boundingSphere.center
+            //   );
+            // let lon = Cesium.Math.toDegrees(cartographic.longitude);
+            // let lat = Cesium.Math.toDegrees(cartographic.latitude);
+
+            let p = sgworld.Navigate.getMouseDegrees(event);
+            let lon = p.lon;
+            let lat = p.lat;
+
+
+            axios
+              .get(
+                "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-buliding-wfs",
+                {
+                  params: {
+                    version: "1.3.0",
+                    request: "GetFeature",
+                    typename: `鍗曚綋鍖朣HP20241029_wgs84`,
+                    propertyname: "*",
+                    format: "json",
+                    filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>`
+                  }
+                }
+              )
+              .then(response => {
+                if (response.data.features.length > 0) {
+                  var geometry = [];
+                  let POIs = response.data.features[0].geometry.coordinates[0];
+                  tooltipHTML = "";
+
+                  for (let i in response.data.features[0].properties) {
+                    let value = response.data.features[0].properties[i];
+
+
+                    value && (tooltipHTML += `<p>${i}锛�${value || "鏃�"}</p>`);
+                  }
+
+                  if (tooltip) {
+                    tooltip.show(false);
+                    tooltip = null;
+                  }
+                  tooltip = sgworld.Core.CreateResultTooltip(window.Viewer, {
+                    color: "black",
+                    addY: 0,
+                    far: 200000,
+                    closeBtn: true,
+                    close: () => {
+                      if (buildingPolygon) {
+                        sgworld.Creator.DeleteObject(buildingPolygon);
+                        buildingPolygon = null;
+                      }
+                    },
+                  });
+             
+
+                  let description = `<div style=' border: 1px solid #fff;border-radius: 5px;background: rgba(0, 0, 0, 0.8);color: #fff;padding: 15px;'>${tooltipHTML}</div>`;
+                  tooltip.showAt(
+                    Cesium.Cartesian3.fromDegrees(p.lon, p.lat, 0),
+                    description
+                  );
+                  for (let i = 0; i < POIs.length; i++) {
+                    geometry.push({
+                      x: parseFloat(POIs[i][0]),
+                      y: parseFloat(POIs[i][1]),
+                      z: 0
+                    });
+                  }
+                  buildingPolygon = sgworld.Creator.createPolygon(
+                    geometry,
+                    {
+                      fillColor: "#00ff0050",
+                      outlineColor: "#ff0000",
+                      outlineWidth: 2
+                    },
+                    1,
+                    0,
+                    "闈�"
+                  );
+                }
+              });
           }
           // else if (nPickFeature.primitive instanceof Cesium.GroundPrimitive) {
           //   let wmsLayer = this.$store.state.selectedLayers.filter((item) => {
@@ -632,7 +852,7 @@
 
           //     axios
           //       .get(
-          //         "http://10.10.4.116:8070/gisserver/rest/services/XingZhengQuHuaTu/MapServer/identify",
+          //         "https://skyzt.bda.gov.cn/gisserver/rest/services/XingZhengQuHuaTu/MapServer/identify",
           //         {
           //           params: {
           //             geometry: `${p.lon},${p.lat}`,
@@ -719,20 +939,20 @@
       this.$parent.$parent.$parent.isShowSpeAnalyse = false;
     },
     resetImg() {
-      if (pickFeature && pickFeature.primitive) {
-        pickFeature.primitive.image = imgUrl;
-        pickFeature.primitive.scale = scale;
-        pickFeature = null;
+      if (window.pickFeature && window.pickFeature.primitive) {
+        window.pickFeature.primitive.image = imgUrl;
+        window.pickFeature.primitive.scale = scale;
+        window.pickFeature = null;
       }
     },
-    resetBorder() {
-      lineArr.forEach((item, index) => {
-        if (lineArr[index]) {
-          sgworld.Creator.DeleteObject(lineArr[index]);
-          lineArr[index] = null;
-        }
-      });
-    },
+    // resetBorder() {
+    //   lineArr.forEach((item, index) => {
+    //     if (lineArr[index]) {
+    //       sgworld.Creator.DeleteObject(lineArr[index]);
+    //       lineArr[index] = null;
+    //     }
+    //   });
+    // },
     stdsjHandle() {
       window.open(
         "http://10.9.2.29:8080/#/login?token=1ed14c5157acb8088efe65bc93a032c3"
@@ -755,20 +975,20 @@
     setRomanFly(result) {
       this.showFlag = false;
       document.getElementById("scroll").style.display = "none";
-      var val = roman.filter((res) => {
+      var val = roman.filter(res => {
         if (res.name == result.name) {
           return res;
         }
       });
       var degreesArr = val[0].value;
 
-      sgworld.Creator.getFlyData(degreesArr, (data) => {
+      sgworld.Creator.getFlyData(degreesArr, data => {
         data.showPoint = false;
         data.showLine = true;
         data.mode = 1;
         // 寮圭獥鏁版嵁
         window.PathAnimationData = {
-          flyData: data,
+          flyData: data
         };
         window.PathAnimationData.winIndex = layer.open({
           type: 2,
@@ -780,7 +1000,7 @@
           content: SmartEarthRootUrl + "Workers/path/Path.html",
           end: function () {
             PathAnimationData.fly && PathAnimationData.fly.exit();
-          },
+          }
         });
       });
     },
@@ -836,10 +1056,10 @@
                 useLine: false, //鏄惁璇曠敤杈呭姪绾�
                 success() {
                   sgworld.Navigate.flyToObj(video);
-                },
+                }
               });
               that.videoarrList.push(video);
-            },
+            }
           });
         }
       }
@@ -852,7 +1072,7 @@
           alpha: this.alpha, //閫忔槑搴�
           far: this.far, //閫忔槑搴�
           heading: this.heading, //閫忔槑搴�
-          pitch: this.pitch, //閫忔槑搴�
+          pitch: this.pitch //閫忔槑搴�
         });
     },
     // 娓呴櫎
@@ -867,13 +1087,213 @@
         );
         this.openGX = "close";
       } else {
-        promiseS3M.then((res) => {
-          res.forEach((item) => {
+        promiseS3M.then(res => {
+          res.forEach(item => {
             item.visible = false;
           });
         });
       }
     },
-  },
+    read(wkt) {
+      var regExes = {
+        typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
+        emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
+        spaces: /\s+/,
+        parenComma: /\)\s*,\s*\(/,
+        doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/, // can't use {2} here
+        trimParens: /^\s*\(?(.*?)\)?\s*$/
+      };
+      /**
+       * Object with properties corresponding to the geometry types. Property values
+       * are functions that do the actual parsing.
+       * @private
+       */
+      var parse$1 = {
+        /**
+         * Return point geometry given a point WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the point.
+         * @return {Point} A point geometry.
+         * @private
+         */
+        point: function point(str) {
+          if (str === undefined) {
+            return [];
+          }
+
+          var coords = str.trim().split(regExes.spaces);
+          return [Number.parseFloat(coords[0]), Number.parseFloat(coords[1])];
+        },
+
+        /**
+         * Return a multipoint geometry given a multipoint WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the multipoint.
+         * @return {Point} A multipoint feature.
+         * @private
+         */
+        multipoint: function multipoint(str) {
+          var this$1 = this;
+
+          if (str === undefined) {
+            return [];
+          }
+
+          var point;
+          var points = str.trim().split(",");
+          var components = [];
+          for (var i = 0, len = points.length; i < len; ++i) {
+            point = points[i].replace(regExes.trimParens, "$1");
+            components.push(parse$1.point(point));
+          }
+          return components;
+        },
+
+        /**
+         * Return a linestring geometry given a linestring WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the linestring.
+         * @return {LineString} A linestring geometry.
+         * @private
+         */
+        linestring: function linestring(str) {
+          if (str === undefined) {
+            return [];
+          }
+
+          var points = str.trim().split(",");
+          var components = [];
+          var coords;
+          for (var i = 0, len = points.length; i < len; ++i) {
+            coords = points[i].trim().split(regExes.spaces);
+            components.push([
+              Number.parseFloat(coords[0]),
+              Number.parseFloat(coords[1])
+            ]);
+          }
+          return components;
+        },
+
+        /**
+         * Return a linearring geometry given a linearring WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the linearring.
+         * @return {LinearRing} A linearring geometry.
+         * @private
+         */
+        linearring: function linearring(str) {
+          if (str === undefined) {
+            return [];
+          }
+
+          var points = str.trim().split(",");
+          var components = [];
+          var coords;
+          for (var i = 0, len = points.length; i < len; ++i) {
+            coords = points[i].trim().split(regExes.spaces);
+            components.push([
+              Number.parseFloat(coords[0]),
+              Number.parseFloat(coords[1])
+            ]);
+          }
+          return components;
+        },
+
+        /**
+         * Return a multilinestring geometry given a multilinestring WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the multilinestring.
+         * @return {MultiLineString} A multilinestring geometry.
+         * @private
+         */
+        multilinestring: function multilinestring(str) {
+          var this$1 = this;
+
+          if (str === undefined) {
+            return [];
+          }
+
+          var line;
+          var lines = str.trim().split(regExes.parenComma);
+          var components = [];
+          for (var i = 0, len = lines.length; i < len; ++i) {
+            line = lines[i].replace(regExes.trimParens, "$1");
+            components.push(parse$1.linestring(line));
+          }
+          return components;
+        },
+
+        /**
+         * Return a polygon geometry given a polygon WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the polygon.
+         * @return {Polygon} A polygon geometry.
+         * @private
+         */
+        polygon: function polygon(str) {
+          var this$1 = this;
+
+          if (str === undefined) {
+            return [];
+          }
+
+          var ring, linestring, linearring;
+          var rings = str.trim().split(regExes.parenComma);
+          var shell;
+          var holes = [];
+          //for (var i = 0, len = rings.length; i < len; ++i) {
+          ring = rings[0].replace(regExes.trimParens, "$1");
+          linestring = ring;
+          //}
+          return linestring;
+        },
+
+        /**
+         * Return a multipolygon geometry given a multipolygon WKT fragment.
+         *
+         * @param {String} str A WKT fragment representing the multipolygon.
+         * @return {MultiPolygon} A multipolygon geometry.
+         * @private
+         */
+        multipolygon: function multipolygon(str) {
+          var this$1 = this;
+
+          if (str === undefined) {
+            return [];
+          }
+
+          var polygon;
+          var polygons = str.trim().split(regExes.doubleParenComma);
+          var components = [];
+          for (var i = 0, len = polygons.length; i < len; ++i) {
+            polygon = polygons[i].replace(regExes.trimParens, "$1");
+            components.push(parse$1.polygon(polygon));
+          }
+          return components;
+        }
+      };
+
+      var geometry, type, str;
+      wkt = wkt.replace(/[\n\r]/g, " ");
+      var matches = regExes.typeStr.exec(wkt);
+      if (wkt.search("EMPTY") !== -1) {
+        matches = regExes.emptyTypeStr.exec(wkt);
+        matches[2] = undefined;
+      }
+      if (matches) {
+        type = matches[1].toLowerCase();
+        str = matches[2];
+        if (parse$1[type]) {
+          geometry = parse$1[type].apply(this, [str]);
+        }
+      }
+
+      if (geometry === undefined) {
+        throw new Error("Could not parse WKT " + wkt);
+      }
+
+      return geometry;
+    }
+  }
 };
 </script>

--
Gitblit v1.9.3