diff options
| -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) { |
