From 055c8329a8e8f7bc50bb1f10711031ea0bccaf2f Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期五, 17 一月 2025 10:30:18 +0800 Subject: [PATCH] 地图 --- src/model/map/OLMap.ts | 26 +++++++++++++++----------- 1 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/model/map/OLMap.ts b/src/model/map/OLMap.ts index 66f46bb..7434965 100644 --- a/src/model/map/OLMap.ts +++ b/src/model/map/OLMap.ts @@ -123,14 +123,14 @@ const markers: Overlay[] = []; // 鍒涘缓鏍囪鐐� - dataList.forEach((item) => { - const marker = this.createMarker(item, markerOpt); + dataList.forEach((item, index) => { + const marker = this.createMarker(`marker-${index}`, item, markerOpt); markers.push(marker); this.map.addOverlay(marker); }); // 璁$畻骞惰皟鏁磋鍥捐寖鍥� - this.adjustViewToMarkers(dataList); + this.adjustViewToOverlays(markers); } createEleOverlay(dom: string | HTMLElement, position = [0, 0]) { @@ -148,7 +148,8 @@ return eleOverlay; } - private createMarker(item: any, markerOpt: any): Overlay { + + private createMarker(id: string, item: any, markerOpt: any): Overlay { // 鍒涘缓鍥剧墖鍏冪礌 const markerImg = document.createElement('img'); markerImg.src = markerOpt.icon.url; @@ -161,6 +162,7 @@ // 鍒涘缓 Overlay const overlay = new MarkerOverlay({ + id, className: MARKER_OVERLAY_CLASS_NAME, element: markerImg, position: position, @@ -174,23 +176,22 @@ if (markerOpt.icon.selectUrl) { markerImg.src = markerOpt.icon.selectUrl; } - markerOpt.click?.(event, overlay, item, position); + markerOpt.click?.(event, overlay, item.extData, position); }); return overlay; } - private adjustViewToMarkers(dataList: any[]) { - // 璁$畻鎵�鏈夌偣鐨勮寖鍥� - const extent = dataList.reduce((ext, item) => { - const coord = fromLonLat(item.position); + adjustViewToOverlays(overlays: Overlay[]) { + const extent = overlays.reduce<number[] | null>((ext, item) => { + const coord = item.getPosition(); + if (!ext) { return [coord[0], coord[1], coord[0], coord[1]]; } return [Math.min(ext[0], coord[0]), Math.min(ext[1], coord[1]), Math.max(ext[2], coord[0]), Math.max(ext[3], coord[1])]; }, null); - // 璋冩暣瑙嗗浘浠ラ�傚簲鏍囪鐐硅寖鍥� if (extent) { this.fitExtend(extent); } @@ -221,7 +222,10 @@ const overlays = this.map.getOverlays(); overlays.forEach((overlay) => { if (overlay instanceof MarkerOverlay) { - overlay.setVisible(visible); + const overlayElement = overlay.getElement(); + if (overlayElement) { + overlayElement.style.visibility = visible ? 'visible' : 'hidden'; + } } }); this.overlayIsVisible.value = visible; -- Gitblit v1.9.3