From f1d41cf233c361681183c53868c3e354f4876ff7 Mon Sep 17 00:00:00 2001 From: Jason Whitmore Date: Fri, 20 Jun 2025 17:37:59 -0700 Subject: [PATCH] NearbyParentFragment.kt: replace old code with calls to updateUserLocationOverlays() This commit completes the refactor and fixes the issue of the user overlays not updating. The new method updateUserLocationOverlays is called to refactor and simplify old code. --- .../nearby/fragments/NearbyParentFragment.kt | 50 +++++-------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index c52c42133..e660d04df 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -724,7 +724,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), val targetP = GeoPoint(target.latitude, target.longitude) mapCenter = targetP binding?.map?.controller?.setCenter(targetP) - recenterMarkerToPosition(targetP) + updateUserLocationOverlays(targetP, true) if (!isCameFromExploreMap()) { moveCameraToPosition(targetP) } @@ -1863,6 +1863,8 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), lastKnownLocation = latLng NearbyController.currentLocation = lastKnownLocation presenter!!.updateMapAndList(locationChangeType) + + updateUserLocationOverlays(GeoPoint(latLng.latitude, latLng.longitude), true) } override fun onLocationChangedSignificantly(latLng: LatLng) { @@ -2644,43 +2646,14 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), */ override fun clearAllMarkers() { binding!!.map.overlayManager.clear() - binding!!.map.invalidate() - val geoPoint = mapCenter - if (geoPoint != null) { - val diskOverlay = - ScaleDiskOverlay( - this.context, - geoPoint, 2000, UnitOfMeasure.foot - ) - val circlePaint = Paint() - circlePaint.color = Color.rgb(128, 128, 128) - circlePaint.style = Paint.Style.STROKE - circlePaint.strokeWidth = 2f - diskOverlay.setCirclePaint2(circlePaint) - val diskPaint = Paint() - diskPaint.color = Color.argb(40, 128, 128, 128) - diskPaint.style = Paint.Style.FILL_AND_STROKE - diskOverlay.setCirclePaint1(diskPaint) - diskOverlay.setDisplaySizeMin(900) - diskOverlay.setDisplaySizeMax(1700) - binding!!.map.overlays.add(diskOverlay) - val startMarker = Marker( - binding!!.map - ) - startMarker.position = geoPoint - startMarker.setAnchor( - Marker.ANCHOR_CENTER, - Marker.ANCHOR_BOTTOM - ) - startMarker.icon = - getDrawable( - this.requireContext(), - fr.free.nrw.commons.R.drawable.current_location_marker - ) - startMarker.title = "Your Location" - startMarker.textLabelFontSize = 24 - binding!!.map.overlays.add(startMarker) + + var geoPoint = mapCenter + val lastLatLng = locationManager.getLastLocation() + if (lastLatLng != null) { + geoPoint = GeoPoint(lastLatLng.latitude, lastLatLng.longitude) } + updateUserLocationOverlays(geoPoint, false) + val scaleBarOverlay = ScaleBarOverlay(binding!!.map) scaleBarOverlay.setScaleBarOffset(15, 25) val barPaint = Paint() @@ -2690,6 +2663,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), binding!!.map.overlays.add(scaleBarOverlay) binding!!.map.overlays.add(mapEventsOverlay) binding!!.map.setMultiTouchControls(true) + binding!!.map.invalidate() } /** @@ -2700,6 +2674,8 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), private fun recenterMarkerToPosition(geoPoint: GeoPoint?) { geoPoint?.let { binding?.map?.controller?.setCenter(it) + + updateUserLocationOverlays(it, true); } }