Correcting bug on RecenterOverlay due to badly handled lifecycle

pull/4/head
Arthur VALIN 2 years ago
parent 226f96fc09
commit 0cf19438cc

@ -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

Loading…
Cancel
Save