summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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) {