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