diff options
| author | Claude <noreply@anthropic.com> | 2026-04-09 09:50:50 +0000 |
|---|---|---|
| committer | Claude <noreply@anthropic.com> | 2026-04-09 09:50:50 +0000 |
| commit | fcafa13e81a91424bb73172c7e709df550ae5d5c (patch) | |
| tree | fcaad7abe47b0a5461e9a928028a13eefd96246a /android-app | |
| parent | 0a0b3afc080954a70526cc3e057bede1e704420b (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')
| -rw-r--r-- | android-app/app/src/main/kotlin/org/terst/nav/ui/map/ParticleWindView.kt | 20 |
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) { |
