From 3970cefa60ea7e5d899b7475345b65646c19c110 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期四, 20 三月 2025 15:17:05 +0800 Subject: [PATCH] 走航融合(待完成) --- 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