From 0415a1c1613fd0bfc9f723e69d0c6fb4d9b10164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E5=B3=B0?= Date: Fri, 5 Jun 2026 19:09:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=9C=B0=E5=9B=BE=E9=81=AE?= =?UTF-8?q?=E6=8C=A1=E5=85=B3=E7=B3=BB=E9=81=AE=E6=8C=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meshmap_frontend/src/components/MeshMap.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/meshmap_frontend/src/components/MeshMap.vue b/meshmap_frontend/src/components/MeshMap.vue index 54e1bb1..7d72181 100644 --- a/meshmap_frontend/src/components/MeshMap.vue +++ b/meshmap_frontend/src/components/MeshMap.vue @@ -27,6 +27,7 @@ const mapEl = ref(null) const menuNode = ref(null) const menuX = ref(0) const menuY = ref(0) +const lastRaisedNodeId = ref(null) let map: L.Map | null = null let markerLayer: L.LayerGroup | null = null let hasFitBounds = false @@ -94,6 +95,7 @@ function nodeDetailHref(nodeId: string): string { function openNodeMenu(node: MapNode, event: L.LeafletMouseEvent) { L.DomEvent.stopPropagation(event) + lastRaisedNodeId.value = node.node_id emit('select-node', node.node_id) menuNode.value = node menuX.value = event.originalEvent.clientX @@ -155,6 +157,7 @@ function renderMarkers(forceFit: boolean) { } const node = item const selected = node.node_id === props.selectedNodeId + const raised = selected || node.node_id === lastRaisedNodeId.value const marker = L.marker([node.latitude, node.longitude], { icon: L.divIcon({ className: `node-marker${selected ? ' selected' : ''}`, @@ -163,10 +166,12 @@ function renderMarkers(forceFit: boolean) { iconAnchor: [17, 11], }), title: node.label, + zIndexOffset: raised ? 1000 : 0, }) marker.bindPopup(buildNodePopupHTML(node), { maxWidth: 320, className: 'node-detail-popup' }) marker.on('click', (event) => { L.DomEvent.stopPropagation(event) + lastRaisedNodeId.value = node.node_id closeNodeMenu() emit('select-node', node.node_id) })