From c7a16ca1b6fbcb0b82a4a09c2e75014624082e37 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期四, 27 三月 2025 22:45:48 +0800
Subject: [PATCH] 修复走航融合功能bug
---
src/utils/map/sector.js | 60 +++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 43 insertions(+), 17 deletions(-)
diff --git a/src/utils/map/sector.js b/src/utils/map/sector.js
index 0e3ced6..25ae2d5 100644
--- a/src/utils/map/sector.js
+++ b/src/utils/map/sector.js
@@ -1,6 +1,7 @@
import { map, object3Dlayer } from './index_old';
import calculate from './calculate';
import imgLocation from '@/assets/mipmap/location.png';
+import { FactorDatas } from '@/model/FactorDatas';
var _defaultDeg = 30,
_sector = undefined,
@@ -76,7 +77,7 @@
content: content,
offset: [-35, 0],
position: 'BM',
- minZoom: 15
+ minZoom: 10
}
}
],
@@ -107,6 +108,9 @@
}
function drawSectorMesh(sDeg, eDeg, lnglat, distance, distance2) {
+ if (distance == 0 || distance2 == 0) {
+ return false;
+ }
// eslint-disable-next-line no-undef
var sector = new AMap.Object3D.Mesh();
sector.transparent = true;
@@ -124,16 +128,16 @@
var angle1 = sDeg + unitDeg * i;
var angle2 = sDeg + unitDeg * (i + 1);
- var l1 = calculate.getLatLon(lnglat, distance, angle1);
- var l2 = calculate.getLatLon(lnglat, distance, angle2);
- var l3 = calculate.getLatLon(lnglat, distance2, angle1);
- var l4 = calculate.getLatLon(lnglat, distance2, angle2);
+ var p1 = calculate.getLatLon(lnglat, distance, angle1);
+ var p2 = calculate.getLatLon(lnglat, distance, angle2);
+ var p3 = calculate.getLatLon(lnglat, distance2, angle1);
+ var p4 = calculate.getLatLon(lnglat, distance2, angle2);
- var coors = calculate.lngLatToGeodeticCoord([l1, l2, l3, l4]);
- l1 = coors[0];
- l2 = coors[1];
- l3 = coors[2];
- l4 = coors[3];
+ var coors = calculate.lngLatToGeodeticCoord([p1, p2, p3, p4]);
+ const l1 = coors[0];
+ const l2 = coors[1];
+ const l3 = coors[2];
+ const l4 = coors[3];
// 鍐呮祴鎵囧舰
geometry.vertices.push(p0.x, p0.y, 0);
@@ -163,6 +167,7 @@
}
object3Dlayer.add(sector);
_sector = sector;
+ return true;
}
function drawTextMaker(list, list2, distance, distance2) {
@@ -211,6 +216,9 @@
}
export default {
+ /**
+ * 娓呯┖鎵囧舰鍜屾枃鏈爣璁�
+ */
clearSector() {
var list = [];
for (const iterator of _sectorViews) {
@@ -225,26 +233,44 @@
}
this.clearSectorMesh();
},
+ /**
+ * 鍙竻绌烘墖褰�
+ */
clearSectorMesh() {
if (_sector) {
object3Dlayer.remove(_sector);
}
},
+ sectorParams: sectorParams,
+ /**
+ * 缁樺埗鎵囧舰
+ * @param {FactorDatas} fDatas
+ * @param {number} i
+ * @returns 鏁版嵁鍧愭爣鐐瑰拰鎵囧舰鏈�澶у崐寰�
+ */
drawSector(fDatas, i) {
- if (_sector != undefined) {
- this.clearSector();
- }
+ this.clearSector();
const { sDeg, eDeg, lnglat, distance, distance2, list, list2 } =
sectorParams(fDatas, i);
- drawSectorMesh(sDeg, eDeg, lnglat, distance, distance2);
- drawElasticMarker(list, list2, distance, distance2);
+ if (drawSectorMesh(sDeg, eDeg, lnglat, distance, distance2)) {
+ // 褰撻閫熷ぇ浜�0缁樺埗浜嗘墖褰㈡椂锛屾墠缁樺埗瀵瑰簲鐨勮窛绂荤瓑鏂囨湰鏍囪
+ // drawElasticMarker(list, list2, distance, distance2);
+ drawTextMaker(list, list2, distance, distance2);
+ }
+ return { p: lnglat, r: distance };
},
+ /**
+ * 缁樺埗杞ㄨ抗鍔ㄧ敾涓殑鎵囧舰
+ * @param {FactorDatas} fDatas
+ * @param {number} i
+ */
drawSectorAna(fDatas, i) {
this.clearSectorMesh();
const { sDeg, eDeg, lnglat, distance, distance2, list, list2 } =
sectorParams(fDatas, i);
- drawSectorMesh(sDeg, eDeg, lnglat, distance, distance2);
- drawTextMaker(list, list2, distance, distance2);
+ if (drawSectorMesh(sDeg, eDeg, lnglat, distance, distance2)) {
+ drawTextMaker(list, list2, distance, distance2);
+ }
}
};
--
Gitblit v1.9.3