summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-04-09 09:50:50 +0000
committerClaude <noreply@anthropic.com>2026-04-09 09:50:50 +0000
commitfcafa13e81a91424bb73172c7e709df550ae5d5c (patch)
treefcaad7abe47b0a5461e9a928028a13eefd96246a
parent0a0b3afc080954a70526cc3e057bede1e704420b (diff)
Fix nullable LatLng? crash in ParticleWindView
MapLibre 13.0.1 types VisibleRegion corners as LatLng? (nullable). Use listOfNotNull() in both onDraw() and scatter() to guard against null corners — mirrors the same fix already applied to MainActivity. https://claude.ai/code/session_01HXPjBsogsJVRwCiekDGkJX
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt20
1 files changed, 12 insertions, 8 deletions
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
index d24d11c..f8122d9 100644
--- a/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
+++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt
@@ -74,10 +74,12 @@ class ParticleWindView @JvmOverloads constructor(
lastFrameNs = now
val r = m.projection.visibleRegion
- val latSouth = minOf(r.nearLeft.latitude, r.nearRight.latitude, r.farLeft.latitude, r.farRight.latitude).toFloat()
- val latNorth = maxOf(r.nearLeft.latitude, r.nearRight.latitude, r.farLeft.latitude, r.farRight.latitude).toFloat()
- val lonWest = minOf(r.nearLeft.longitude, r.nearRight.longitude, r.farLeft.longitude, r.farRight.longitude).toFloat()
- val lonEast = maxOf(r.nearLeft.longitude, r.nearRight.longitude, r.farLeft.longitude, r.farRight.longitude).toFloat()
+ val corners = listOfNotNull(r.nearLeft, r.nearRight, r.farLeft, r.farRight)
+ if (corners.size < 4) { postInvalidateOnAnimation(); return }
+ val latSouth = corners.minOf { it.latitude }.toFloat()
+ val latNorth = corners.maxOf { it.latitude }.toFloat()
+ val lonWest = corners.minOf { it.longitude }.toFloat()
+ val lonEast = corners.maxOf { it.longitude }.toFloat()
val latRange = latNorth - latSouth
val lonRange = lonEast - lonWest
@@ -138,10 +140,12 @@ class ParticleWindView @JvmOverloads constructor(
private fun scatter(m: MapLibreMap) {
val r = m.projection.visibleRegion
- val latSouth = minOf(r.nearLeft.latitude, r.nearRight.latitude, r.farLeft.latitude, r.farRight.latitude).toFloat()
- val latNorth = maxOf(r.nearLeft.latitude, r.nearRight.latitude, r.farLeft.latitude, r.farRight.latitude).toFloat()
- val lonWest = minOf(r.nearLeft.longitude, r.nearRight.longitude, r.farLeft.longitude, r.farRight.longitude).toFloat()
- val lonEast = maxOf(r.nearLeft.longitude, r.nearRight.longitude, r.farLeft.longitude, r.farRight.longitude).toFloat()
+ val corners = listOfNotNull(r.nearLeft, r.nearRight, r.farLeft, r.farRight)
+ if (corners.size < 4) return
+ val latSouth = corners.minOf { it.latitude }.toFloat()
+ val latNorth = corners.maxOf { it.latitude }.toFloat()
+ val lonWest = corners.minOf { it.longitude }.toFloat()
+ val lonEast = corners.maxOf { it.longitude }.toFloat()
val latRange = latNorth - latSouth
val lonRange = lonEast - lonWest
for (i in 0 until N) {