From fce97997d88f889d405854601094653e06b33210 Mon Sep 17 00:00:00 2001 From: andrekir Date: Fri, 4 Aug 2023 17:07:31 -0300 Subject: [PATCH] refactor: manage overlays without clear() calls --- .../java/com/geeksville/mesh/ui/map/MapFragment.kt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt index 7d14a8bc..23e4dbf9 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/map/MapFragment.kt @@ -435,7 +435,6 @@ fun MapView(model: UIViewModel = viewModel()) { } fun drawOverlays() = map.apply { - overlays.clear() if (overlays.none { it is MapEventsOverlay }) { overlays.add(0, MapEventsOverlay(mapEventsReceiver)) } @@ -445,9 +444,7 @@ fun MapView(model: UIViewModel = viewModel()) { addCopyright() // Copyright is required for certain map sources createLatLongGrid(false) -// overlays.filterIsInstance().forEach { overlay -> -// overlayManager.remove(overlay) -// } + overlays.removeAll(overlays.filterIsInstance()) val nodeMarkers = onNodesChanged(nodes.values) val waypointMarkers = onWaypointChanged(waypoints.values) debug("Showing on map: ${nodeMarkers.size} nodes ${waypointMarkers.size} waypoints") @@ -509,8 +506,9 @@ fun MapView(model: UIViewModel = viewModel()) { overlayManager = CustomOverlayManager(TilesOverlay(tileProvider, context)) setMultiTouchControls(false) zoomLevelMax = tileProvider.tileSource.maximumZoomLevel.toDouble() - } else overlays.filterIsInstance().forEach { overlay -> - overlayManager.remove(overlay) + drawOverlays() + } else { + overlays.removeAll(overlays.filterIsInstance()) } val zoomFactor = 1.3 // zoom difference between view and download area polygon controller.setZoom(zoomLevel - zoomFactor) @@ -521,7 +519,7 @@ fun MapView(model: UIViewModel = viewModel()) { GeoPoint(it.latitude, it.longitude) } } - overlayManager.add(polygon) + overlays.add(polygon) val tileCount: Int = CacheManager(this).possibleTilesInArea( downloadRegionBoundingBox, zoomLevelMin.toInt(),