From fcafa13e81a91424bb73172c7e709df550ae5d5c Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 9 Apr 2026 09:50:50 +0000 Subject: Fix nullable LatLng? crash in ParticleWindView MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../kotlin/org/terst/nav/ui/map/ParticleWindView.kt | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'android-app/app') 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) { -- cgit v1.2.3