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