summaryrefslogtreecommitdiff
path: root/android-app/app
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 /android-app/app
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
Diffstat (limited to 'android-app/app')
-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) {