From aef7a66e9568004d3e8bb9930db5866d82ed96c6 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期一, 29 四月 2024 22:32:46 +0800
Subject: [PATCH] 新增绘制3d走航图功能

---
 src/utils/map/3dLayer.js |   88 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 87 insertions(+), 1 deletions(-)

diff --git a/src/utils/map/3dLayer.js b/src/utils/map/3dLayer.js
index fef02a0..d0ad682 100644
--- a/src/utils/map/3dLayer.js
+++ b/src/utils/map/3dLayer.js
@@ -1 +1,87 @@
-import { object3Dlayer } from '../map';
+import { map, object3Dlayer } from './index_old';
+
+// 3d鍥惧舰
+var _cylinder = undefined,
+  // 褰撳墠缁樺埗鐨勫浘褰腑鐨勬渶灏忛珮搴�
+  _minH = -1,
+  // 褰撳墠缁樺埗鐨勫浘褰腑鐨勬渶澶ч珮搴�
+  _maxH = -1;
+
+//鐩戞祴鏁版嵁
+var _factorDatas = {
+    lnglats: [],
+    heights: [],
+    type: ''
+  },
+  //褰撳墠閫変腑鐨勭洃娴嬪洜瀛愭暟鎹�
+  _factor = {},
+  _zoomFirst = true;
+
+function onMapZoom() {
+  // 棣栨鍦板浘缂╂斁鐩戝惉涓嶆墽琛岋紙鍥犱负璁惧畾鐩戝惉鍑芥暟鍚庝細绔嬪嵆鎵ц涓�娆★紝鍙兘瀹樻柟鍑芥暟鏈夌浉鍏冲弬鏁帮紝鍚庣画寰呬慨鏀癸級
+  if (_zoomFirst) {
+    _zoomFirst = false;
+    return;
+  }
+  const fDatas = _factorDatas;
+  const factor = _factor;
+  // MapUtil._object3Dlayer.clear()
+  // MapUtil.drawMesh(f.lnglats, f.heights, f.type, false)
+  MapUtil.drawMesh2(fDatas, factor);
+  MapUtil.drawMarker();
+}
+
+export default {
+  /**
+   * 缁樺埗3D璧拌璺嚎鍥�
+   * @param fDatas 瀹屾暣鐩戞祴鏁版嵁
+   * @param factor 褰撳墠灞曠ず鐨勭洃娴嬪洜瀛愮殑鍊紇alue
+   * @param merge 鏄惁鍜屼箣鍓嶇粯鍒剁殑鍥惧舰鍚堝苟
+   * @param setCenter 闀滃ご鏄惁鑷姩绉诲姩鑷冲浘褰腑蹇�
+   */
+  drawRoadMap(fDatas, factor, merge, setCenter) {
+    const lnglats_GD = fDatas.lnglats_GD;
+    const heights = factor.heights;
+
+    // 1.鍏抽棴鍦板浘缂╂斁鐩戝惉
+    map.off('zoomend', this._onMapZoom);
+
+    // 2.璁$畻缁樺浘楂樺害鐨勮竟鐣屽��
+    if (merge != true) {
+      var minH = _minH < 0 ? heights[0] : _minH;
+      var maxH = _maxH < 0 ? heights[0] : _maxH;
+      for (let i = 0; i < heights.length; i++) {
+        const h = heights[i];
+        minH = Math.min(minH, h);
+        maxH = Math.max(maxH, h);
+      }
+      _minH = minH;
+      _maxH = maxH;
+    }
+
+    // 3.纭畾瀹氫綅鍧愭爣鐐�
+    var center;
+    if (setCenter && lnglats_GD.length > 0) {
+      var p = lnglats_GD[0];
+      for (let i = 0; i < lnglats_GD.length; i++) {
+        const e = lnglats_GD[i];
+        if (e[0] != 0) {
+          p = e;
+          break;
+        }
+      }
+      center = new AMap.LngLat(...p);
+    }
+
+    // 5.缁樺埗3D鍥惧舰
+    drawMesh2(fDatas, factor, center, merge);
+
+    // 缂╂斁鍦板浘鍒板悎閫傜殑瑙嗛噹绾у埆
+    // map.setFitView()
+
+    // 6.寮�鍚湴鍥剧缉鏀剧洃鍚�
+    if (lnglats_GD.length > 0) {
+      map.on('zoomend', this._onMapZoom);
+    }
+  }
+};

--
Gitblit v1.9.3