From 626003e9beb59cf711f59f3b48087300070f121e Mon Sep 17 00:00:00 2001
From: lixuliang <lixuliang_hd@126.com>
Date: 星期五, 15 三月 2024 09:49:31 +0800
Subject: [PATCH] 优化

---
 src/components/leftMenu/sousuo.vue |  399 +++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 275 insertions(+), 124 deletions(-)

diff --git a/src/components/leftMenu/sousuo.vue b/src/components/leftMenu/sousuo.vue
index 993092d..07aeca6 100644
--- a/src/components/leftMenu/sousuo.vue
+++ b/src/components/leftMenu/sousuo.vue
@@ -58,6 +58,14 @@
           @input="changeInput"
           clearable
         >
+          <el-select v-model="select" slot="prepend" placeholder="璇烽�夋嫨">
+            <el-option
+              v-for="(item, index) in options"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
           <el-button
             slot="append"
             icon="el-icon-search"
@@ -90,7 +98,7 @@
         </div>
       </div>
       <div v-else>
-        <div class="ssjg" v-show="ssjgxs">璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘</div>
+        <div class="ssjg" v-show="ssjgxs">鏈悳绱㈠埌缁撴灉</div>
       </div>
     </div>
   </div>
@@ -128,7 +136,10 @@
   height: 100%;
   top: 0;
   background-color: #f3f3f3;
-  z-index: 3000;
+  z-index: 99;
+}
+.el-select {
+  width: 80px;
 }
 
 /* 姣忔潯鎼滅储缁撴灉 */
@@ -172,14 +183,16 @@
   background: rgba(218, 218, 218, 0.1);
 }
 </style>
+
+
 <script>
 let timers = null;
-
 import axios from "axios";
 import store from "@/utils/store.js";
 import common from "@/components/common";
-let flyPoint;
-let flyLine;
+
+window.flyPoint = null;
+window.flyLine = null;
 let Allresults = [];
 
 export default {
@@ -193,25 +206,40 @@
       showList: false,
       total: 0,
       poiList: [],
+      select: "鍏ㄩ儴",
+      options: [
+        {
+          label: "鍏ㄩ儴",
+          value: "鍏ㄩ儴",
+        },
+        {
+          label: "POI",
+          value: "POI",
+        },
+        {
+          label: "鍦板潡",
+          value: "鍦板潡",
+        },
+      ],
     };
   },
   methods: {
     clearval() {
       this.syssval = "璇疯緭鍏ュ叧閿瘝鎼滅储鍦板浘";
-      flyPoint && Viewer.entities.remove(flyPoint);
-      flyPoint = undefined;
-      flyLine && sgworld.Creator.DeleteObject(flyLine);
-      flyLine = undefined;
+      window.flyPoint && Viewer.entities.remove(window.flyPoint);
+      window.flyPoint = undefined;
+      window.flyLine && sgworld.Creator.DeleteObject(window.flyLine);
+      window.flyLine = undefined;
       this.poi_text = "";
       this.ssjgxs = false;
     },
     changeInput() {
       if (this.poi_text === "") {
         this.ssjgxs = false;
-        flyPoint && Viewer.entities.remove(flyPoint);
-        flyPoint = undefined;
-        flyLine && sgworld.Creator.DeleteObject(flyLine);
-        flyLine = undefined;
+        window.flyPoint && Viewer.entities.remove(window.flyPoint);
+        window.flyPoint = undefined;
+        window.flyLine && sgworld.Creator.DeleteObject(window.flyLine);
+        window.flyLine = undefined;
       } else {
         clearTimeout(timers);
         timers = setTimeout(() => {
@@ -254,6 +282,100 @@
       rectangle.maxy > 31.182515322 && (rectangle.maxy = 31.182515322);
       return `RECT(${rectangle.minx} ${rectangle.miny},${rectangle.maxx} ${rectangle.maxy})`;
     },
+    getGdPoi() {
+      axios
+        .get(common.poiserve, {
+          params: {
+            request: "GdPoi",
+            keywords: this.poi_text,
+            output: "json",
+            coord: "cgcs2000",
+            offset: 20,
+            page: 1,
+          },
+        })
+        .then((res) => {
+          // 楂樺痉
+          if (res.data.status == 1) {
+            res.data.pois &&
+              res.data.pois
+                .filter((item) => {
+                  var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
+                  return (
+                    item.pname.includes("鍖椾含") &&
+                    item.name.includes(this.poi_text) &&
+                    !reg.test(item.typecode)
+                  );
+                })
+                .forEach((val) => {
+                  let poiarr = val.location.split(",");
+                  let poi = {
+                    lon: parseFloat(poiarr[0]),
+                    lat: parseFloat(poiarr[1]),
+                  };
+                  let obj = {
+                    adcode: val.adcode,
+                    address: val.address,
+                    adname: val.area,
+                    citycode: val.citycode,
+                    cityname: val.cityname,
+                    id: val.uid,
+                    lat: poi.lat,
+                    lng: poi.lon,
+                    name: val.name,
+                    pcode: val.pcode,
+                    pname: val.province,
+                    type: val.type,
+                    typecode: val.typecode,
+                  };
+                  Allresults.push(obj);
+                });
+          }
+          this.total = Allresults.length;
+          this.poiList = Allresults;
+          this.showList = true;
+        });
+    },
+    getData() {
+      axios
+        .post(common.poiserve2, {
+          adcode: "110115",
+          address: {
+            name: "",
+            type: "",
+          },
+          adname: "澶у叴鍖�",
+          cityname: "鍖椾含甯�",
+          name: {
+            name: this.poi_text,
+            type: "",
+          },
+          page: 1,
+          perPageCount: 20,
+          pcode: "110000",
+          pname: "",
+          resType: "",
+        })
+        .then((res) => {
+          if (res.status == 200) {
+            res.data.data.res &&
+              res.data.data.res
+                .filter((item) => {
+                  // 鍒ゆ柇鍦板潡鏄惁鏈夋眽瀛�
+                  var reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
+                  return (
+                    item.name.includes(this.poi_text) && reg.test(item.typecode)
+                  );
+                })
+                .forEach((val) => {
+                  Allresults.push(val);
+                });
+          }
+          this.total = Allresults.length;
+          this.poiList = Allresults;
+          this.showList = true;
+        });
+    },
     search() {
       if (this.poi_text === "") {
         this.poiList = [];
@@ -262,111 +384,140 @@
         this.ssjgxs = true;
         Allresults = [];
         this.poiList = [];
-        axios
-          .all([
-            // 115鎺ュ彛锛堝彲鏌ュ湴鍧楀悕锛�
-            axios.post(common.poiserve2, {
-              adcode: "110115",
-              address: {
-                name: "",
-                type: "",
-              },
-              adname: "澶у叴鍖�",
-              cityname: "鍖椾含甯�",
-              name: {
-                name: this.poi_text,
-                type: "",
-              },
-              page: 1,
-              perPageCount: 20,
-              pcode: "110000",
-              pname: "",
-              resType: "",
-            }),
-            // // 甯傜骇骞冲彴锛堢櫨搴︼細浼氭煡鍒板鍦帮級
-            // axios.get(common.poiserve, {
-            //   params: {
-            //     request: "bdPoi",
-            //     query: this.poi_text,
-            //     output: "json",
-            //     coord: "cgcs2000",
-            //     page_num: 0,
-            //     page_size: 20,
-            //   },
-            // }),
-            //  甯傜骇骞冲彴锛堥珮寰凤級
-            axios.get(common.poiserve, {
-              params: {
-                request: "GdPoi",
-                keywords: this.poi_text,
-                output: "json",
-                coord: "cgcs2000",
-                offset: 20,
-                page: 1,
-              },
-            }),
-          ])
-          .then(
-            (data) => {
-              // this.total = data.data.pois.length;
-              // this.poiList =
-              //   data.data && data.data.pois;
-              //115鎺ュ彛
-              if (data[0].status == 200) {
-                data[0].data.data.res
-                  .filter((item) => {
-                    return item.name.includes(this.poi_text);
-                  })
-                  .forEach((val) => {
-                    Allresults.push(val);
-                  });
-              }
-              // 甯傜骇骞冲彴
-              // // 鐧惧害
-              // if (data[1].data.status == 0) {
-              //   data[1].data.results.forEach((val) => {
-              //     let obj = {
-              //       address: val.address,
-              //       adname: val.area,
-              //       cityname: val.city,
-              //       id: val.uid,
-              //       lat: val.location.lat,
-              //       lng: val.location.lng,
-              //       name: val.name,
-              //       pname: val.province,
-              //     };
-              //     Allresults.push(obj);
-              //   });
-              // }
-              // 楂樺痉
-              if (data[1].data.status == 1) {
-                data[1].data.pois.forEach((val) => {
-                  let poiarr = val.location.split(",");
-                  let poi = {
-                    lon: parseFloat(poiarr[0]),
-                    lat: parseFloat(poiarr[1]),
-                  };
-                  let obj = {
-                    address: val.address,
-                    adname: val.area,
-                    cityname: val.city,
-                    id: val.uid,
-                    lat: poi.lat,
-                    lng: poi.lon,
-                    name: val.name,
-                    pname: val.province,
-                  };
-                  Allresults.push(obj);
-                });
-              }
-              this.total = Allresults.length;
-              this.poiList = Allresults;
-              this.showList = true;
-            },
-            (response) => {
-              console.log("error");
-            }
-          );
+        switch (this.select) {
+          case "鍏ㄩ儴":
+            this.getGdPoi();
+            this.getData();
+            // axios
+            //   .all([
+            //     // 115鎺ュ彛锛堝彲鏌ュ湴鍧楀悕锛�
+            //     axios.post(common.poiserve2, {
+            //       adcode: "110115",
+            //       address: {
+            //         name: "",
+            //         type: "",
+            //       },
+            //       adname: "澶у叴鍖�",
+            //       cityname: "鍖椾含甯�",
+            //       name: {
+            //         name: this.poi_text,
+            //         type: "",
+            //       },
+            //       page: 1,
+            //       perPageCount: 20,
+            //       pcode: "110000",
+            //       pname: "",
+            //       resType: "",
+            //     }),
+            //     // // 甯傜骇骞冲彴锛堢櫨搴︼細浼氭煡鍒板鍦帮級
+            //     // axios.get(common.poiserve, {
+            //     //   params: {
+            //     //     request: "bdPoi",
+            //     //     query: this.poi_text,
+            //     //     output: "json",
+            //     //     coord: "cgcs2000",
+            //     //     page_num: 0,
+            //     //     page_size: 20,
+            //     //   },
+            //     // }),
+            //     //  甯傜骇骞冲彴锛堥珮寰凤級
+            //     axios.get(common.poiserve, {
+            //       params: {
+            //         request: "GdPoi",
+            //         keywords: this.poi_text,
+            //         output: "json",
+            //         coord: "cgcs2000",
+            //         offset: 20,
+            //         page: 1,
+            //       },
+            //     }),
+            //   ])
+            //   .then(
+            //     (data) => {
+            //       // this.total = data.data.pois.length;
+            //       // this.poiList =
+            //       //   data.data && data.data.pois;
+            //       //115鎺ュ彛
+            //       if (data[0].status == 200) {
+            //         data[0].data.data.res &&
+            //           data[0].data.data.res
+            //             .filter((item) => {
+            //               return item.name.includes(this.poi_text);
+            //             })
+            //             .forEach((val) => {
+            //               Allresults.push(val);
+            //             });
+            //       }
+            //       // 甯傜骇骞冲彴
+            //       // // 鐧惧害
+            //       // if (data[1].data.status == 0) {
+            //       //   data[1].data.results.forEach((val) => {
+            //       //     let obj = {
+            //       //       address: val.address,
+            //       //       adname: val.area,
+            //       //       cityname: val.city,
+            //       //       id: val.uid,
+            //       //       lat: val.location.lat,
+            //       //       lng: val.location.lng,
+            //       //       name: val.name,
+            //       //       pname: val.province,
+            //       //     };
+            //       //     Allresults.push(obj);
+            //       //   });
+            //       // }
+            //       // 楂樺痉
+
+            //       console.log(data, "鏁版嵁");
+            //       if (data[0].data.status == 1) {
+            //         data[0].data.pois &&
+            //           data[0].data.pois
+            //             .filter((item) => {
+            //               return (
+            //                 item.pname.includes("鍖椾含") &&
+            //                 item.name.includes(this.poi_text)
+            //               );
+            //             })
+            //             .forEach((val) => {
+            //               let poiarr = val.location.split(",");
+            //               let poi = {
+            //                 lon: parseFloat(poiarr[0]),
+            //                 lat: parseFloat(poiarr[1]),
+            //               };
+            //               let obj = {
+            //                 adcode: val.adcode,
+            //                 address: val.address,
+            //                 adname: val.area,
+            //                 citycode: val.citycode,
+            //                 cityname: val.cityname,
+            //                 id: val.uid,
+            //                 lat: poi.lat,
+            //                 lng: poi.lon,
+            //                 name: val.name,
+            //                 pcode: val.pcode,
+            //                 pname: val.province,
+            //                 type: val.type,
+            //                 typecode: val.typecode,
+            //               };
+            //               Allresults.push(obj);
+            //             });
+            //       }
+            //       this.total = Allresults.length;
+            //       this.poiList = Allresults;
+            //       this.showList = true;
+            //       console.log(Allresults);
+            //     },
+            //     (response) => {
+            //       console.log("error");
+            //     }
+            //   );
+            break;
+          case "POI":
+            this.getGdPoi();
+            break;
+          case "鍦板潡":
+            this.getData();
+            break;
+        }
       }
     },
     getPosition(geo) {
@@ -380,8 +531,8 @@
       // let degrees = item.location.split(',');
       // let degrees = [item.location.lng, item.location.lat];
       let degrees = [item.lng, item.lat];
-      flyPoint && Viewer.entities.remove(flyPoint);
-      flyLine && sgworld.Creator.DeleteObject(flyLine);
+      window.flyPoint && Viewer.entities.remove(window.flyPoint);
+      window.flyLine && sgworld.Creator.DeleteObject(window.flyLine);
       sgworld.Navigate.flyToPointsInterest({
         destination: Cesium.Cartesian3.fromDegrees(
           degrees[0],
@@ -390,16 +541,16 @@
         ),
       });
       // 娣诲姞鐐逛綅
-      flyPoint = Viewer.entities.add({
+      window.flyPoint = Viewer.entities.add({
         position: Cesium.Cartesian3.fromDegrees(degrees[0], degrees[1]),
         billboard: {
           verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
           scale: 1,
-          image: window.SmartEarthRootUrl + "/Workers/image/mark.png",
+          image: window.SmartEarthRootUrl + "/Workers/image/mark1.png",
           heightReference: 1,
           disableDepthTestDistance: Number.POSITIVE_INFINITY,
         },
-        properties:item
+        properties: item,
       });
       // 濡傛灉鏄湴鍧楋紝娣诲姞鑼冨洿绾�
       if (item.type == "澶у叴鐢ㄥ湴") {
@@ -428,7 +579,7 @@
                   z: 0,
                 });
               }
-              flyLine = sgworld.Creator.createPolyline(
+              window.flyLine = sgworld.Creator.createPolyline(
                 geometry,
                 "#ff0000",
                 1,

--
Gitblit v1.9.3