mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-03-29 14:19:53 +00:00
fix: run map.invalidateSize before marker decollision on every render
On SPA navigation, the map container may not have its final dimensions when markers render, causing latLngToLayerPoint to return incorrect pixel coordinates for decollision. This resulted in overlapping markers that only resolved on a full page refresh. Fix: call map.invalidateSize() at the start of every renderMarkers() call, ensuring correct container dimensions before deconfliction runs.
This commit is contained in:
@@ -22,9 +22,9 @@
|
||||
<meta name="twitter:title" content="MeshCore Analyzer">
|
||||
<meta name="twitter:description" content="Real-time MeshCore LoRa mesh network analyzer — live packet visualization, node tracking, channel decryption, and route analysis.">
|
||||
<meta name="twitter:image" content="https://raw.githubusercontent.com/Kpa-clawbot/meshcore-analyzer/master/public/og-image.png">
|
||||
<link rel="stylesheet" href="style.css?v=1774383461">
|
||||
<link rel="stylesheet" href="home.css?v=1774383461">
|
||||
<link rel="stylesheet" href="live.css?v=1774383461">
|
||||
<link rel="stylesheet" href="style.css?v=1774383787">
|
||||
<link rel="stylesheet" href="home.css?v=1774383787">
|
||||
<link rel="stylesheet" href="live.css?v=1774383787">
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
||||
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
||||
crossorigin="anonymous">
|
||||
@@ -81,27 +81,27 @@
|
||||
<main id="app" role="main"></main>
|
||||
|
||||
<script src="vendor/qrcode.js"></script>
|
||||
<script src="roles.js?v=1774383461"></script>
|
||||
<script src="customize.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="region-filter.js?v=1774383461"></script>
|
||||
<script src="hop-resolver.js?v=1774383461"></script>
|
||||
<script src="hop-display.js?v=1774383461"></script>
|
||||
<script src="app.js?v=1774383461"></script>
|
||||
<script src="home.js?v=1774383461"></script>
|
||||
<script src="packet-filter.js?v=1774383461"></script>
|
||||
<script src="packets.js?v=1774383461"></script>
|
||||
<script src="map.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="traces.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="analytics.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v1-constellation.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-lab.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="live.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observers.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observer-detail.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="node-analytics.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="perf.js?v=1774383461" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="roles.js?v=1774383787"></script>
|
||||
<script src="customize.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="region-filter.js?v=1774383787"></script>
|
||||
<script src="hop-resolver.js?v=1774383787"></script>
|
||||
<script src="hop-display.js?v=1774383787"></script>
|
||||
<script src="app.js?v=1774383787"></script>
|
||||
<script src="home.js?v=1774383787"></script>
|
||||
<script src="packet-filter.js?v=1774383787"></script>
|
||||
<script src="packets.js?v=1774383787"></script>
|
||||
<script src="map.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="traces.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="analytics.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v1-constellation.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-lab.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="live.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observers.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observer-detail.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="node-analytics.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="perf.js?v=1774383787" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -619,6 +619,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure map has correct pixel dimensions before deconfliction
|
||||
// (SPA navigation may render markers before container is fully sized)
|
||||
map.invalidateSize({ animate: false });
|
||||
|
||||
// Deconflict ALL markers
|
||||
if (allMarkers.length > 0) {
|
||||
deconflictLabels(allMarkers, map);
|
||||
|
||||
Reference in New Issue
Block a user