From 0cf19438cc5d22fa8d2743780f24533f5d782383 Mon Sep 17 00:00:00 2001 From: "arthur.valin" Date: Mon, 6 Mar 2023 21:46:49 +0100 Subject: [PATCH] Correcting bug on RecenterOverlay due to badly handled lifecycle --- .../geocaching/RecenterOverlay.kt | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt b/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt index eee6a23..47aae20 100644 --- a/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt +++ b/app/src/main/java/uca/baptistearthur/geocaching/RecenterOverlay.kt @@ -17,7 +17,6 @@ import org.osmdroid.views.overlay.mylocation.IMyLocationProvider class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: MapView) : Overlay(), GestureDetector.OnGestureListener, IMyLocationConsumer { private val gestureDetector: GestureDetector = GestureDetector(mapView.context, this) - private var circleRectF=RectF(); @@ -54,14 +53,36 @@ class RecenterOverlay(val myLocationProvider: IMyLocationProvider, val mapView: myLocationProvider.startLocationProvider(this); } + fun disableMyLocation(){ + myLocationProvider.stopLocationProvider(); + } + override fun onSingleTapConfirmed(e: MotionEvent?, mapView: MapView?) = myLocationProvider.lastKnownLocation?.let { if (e != null && circleRectF.contains(e.x, e.y)) { mapView?.controller?.setCenter(GeoPoint(it.latitude, it.longitude)) + mapView?.controller?.setZoom(20.0); + } true } ?: false + + override fun onResume() { + super.onResume() + enableMyLocation() + } + + override fun onPause(){ + disableMyLocation() + super.onPause() + } + + override fun onDetach(mapView: MapView?) { + disableMyLocation() + super.onDetach(mapView) + } + override fun onDown(p0: MotionEvent) = true override fun onShowPress(p0: MotionEvent) = Unit override fun onSingleTapUp(p0: MotionEvent) = true