From 2d3d56ff801b73afdb779267004d740f9beafe57 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 31 十月 2023 16:09:44 +0800
Subject: [PATCH] 2023.10.31

---
 src/components/map/baseMapUtil.js |   55 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/src/components/map/baseMapUtil.js b/src/components/map/baseMapUtil.js
index 735b58e..02b6601 100644
--- a/src/components/map/baseMapUtil.js
+++ b/src/components/map/baseMapUtil.js
@@ -80,21 +80,31 @@
     });
   },
 
+  addMarker(lnglat) {
+    const marker = new AMap.Marker({
+      position: lnglat
+    });
+    map.add(marker);
+    this.setCenter(lnglat);
+    return marker;
+  },
+
+  setCenter(lnglat) {
+    map.setCenter(lnglat);
+  },
+
   /**
    * 缂╂斁鍦板浘鍒板悎閫傜殑瑙嗛噹绾у埆
    */
-  setFitView(overlays, type = 0) {
+  setFitView(...overlays) {
     const _overlays = toRaw(overlays);
-    switch (type) {
-      case 0:
-        map.setFitView([_overlays]);
-        break;
-      case 1:
-        map.setFitView(_overlays);
-        break;
-      default:
-        map.setFitView([_overlays]);
-        break;
+    map.setFitView(_overlays, true, [60, 60, 500, 60], 14.5);
+  },
+
+  addView(overlays) {
+    if (overlays) {
+      const _overlays = toRaw(overlays);
+      map.add(_overlays);
     }
   },
 
@@ -102,8 +112,10 @@
    * 绉婚櫎瑕嗙洊鐗�
    */
   removeView(overlays) {
-    const _overlays = toRaw(overlays);
-    map.remove(_overlays);
+    if (overlays) {
+      const _overlays = toRaw(overlays);
+      map.remove(_overlays);
+    }
   },
 
   /**
@@ -133,8 +145,10 @@
         (((a * (1 - ee)) / (magic * sqrtmagic)) * PI);
       dlng =
         (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI);
-      let mglat = Math.round((lat * 2 - lat - dlat) * 1000000) / 1000000;
-      let mglng = Math.round((lng * 2 - lng - dlng) * 1000000) / 1000000;
+      let mglat =
+        Math.round((lat * 2 - lat - dlat) * 1000000) / 1000000;
+      let mglng =
+        Math.round((lng * 2 - lng - dlng) * 1000000) / 1000000;
       return [mglng, mglat];
     }
   },
@@ -164,5 +178,16 @@
       let mglng = Math.round((lng + dlng) * 1000000) / 1000000;
       return [mglng, mglat];
     }
+  },
+  gpsConvert(gps) {
+    return new Promise((reject) => {
+      // 鍙傛暟璇存槑锛氶渶瑕佽浆鎹㈢殑鍧愭爣锛岄渶瑕佽浆鎹㈢殑鍧愭爣绫诲瀷锛岃浆鎹㈡垚鍔熷悗鐨勫洖璋冨嚱鏁�
+      AMap.convertFrom(gps, 'baidu', function (status, result) {
+        if (result.info === 'ok') {
+          var lnglats = result.locations; // 杞崲鍚庣殑楂樺痉鍧愭爣 Array.<LngLat>
+          reject(lnglats[0]);
+        }
+      });
+    });
   }
 };

--
Gitblit v1.9.3