From d0f5933cb7fe9196ca0250252efc820a1a9d947e Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 08 五月 2024 22:47:30 +0800
Subject: [PATCH] 新增历史轨迹菜单

---
 src/utils/map/calculate.js |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 57 insertions(+), 0 deletions(-)

diff --git a/src/utils/map/calculate.js b/src/utils/map/calculate.js
index 058531f..505d082 100644
--- a/src/utils/map/calculate.js
+++ b/src/utils/map/calculate.js
@@ -4,6 +4,52 @@
 
 import { map } from './index_old';
 
+function _prepare4convert(lnglats) {
+  var coor = [];
+  var maxLength = 1000;
+  var start = 0;
+  var end = start + maxLength;
+  while (end <= lnglats.length) {
+    coor.push(lnglats.slice(start, end));
+    start += maxLength;
+    end += maxLength;
+  }
+  if (start < lnglats.length) {
+    coor.push(lnglats.slice(start));
+  }
+  return coor;
+}
+
+function parse2LngLat(lnglats) {
+  // 鍒涘缓鍖呭惈4涓妭鐐圭殑鎶樼嚎鍙婃枃瀛楁爣娉�
+  var path = [];
+  lnglats.forEach(function (value) {
+    // eslint-disable-next-line no-undef
+    path.push(new AMap.LngLat(value[0], value[1]));
+  });
+  return path;
+}
+
+/**
+ * 灏唃ps缁忕含搴﹁浆鎹负楂樺痉鍦板浘缁忕含搴�
+ * @param {*} lnglats
+ * @param {*} callback
+ */
+function _convertLatlng(index, coor, lnglats, callback) {
+  if (index < coor.length) {
+    var path = parse2LngLat(coor[index]);
+    // eslint-disable-next-line no-undef
+    AMap.convertFrom(path, 'gps', function (status, result) {
+      if (result.info === 'ok') {
+        lnglats.push.apply(lnglats, result.locations);
+        _convertLatlng(index + 1, coor, lnglats, callback);
+      }
+    });
+  } else {
+    callback(lnglats);
+  }
+}
+
 export default {
   /**
    * 鏍规嵁鍧愭爣鐐广�佽窛绂诲拰瑙掑害锛屽緱鍒板彟涓�涓潗鏍囩偣
@@ -55,5 +101,16 @@
       coors_GD.push(p);
     }
     return coors_GD;
+  },
+
+  convertFromGPS: function (gps, callback) {
+    var coor = _prepare4convert(gps);
+    _convertLatlng(0, coor, [], function (result) {
+      var gd = [];
+      result.forEach((r) => {
+        gd.push([r.lng, r.lat]);
+      });
+      callback(gd);
+    });
   }
 };

--
Gitblit v1.9.3