From 1a816fdecd31b1364a77851fe90da78846dc8f07 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Wed, 2 Oct 2019 15:14:13 +0300 Subject: [PATCH] Make current location marker follow --- .../nearby/mvp/contract/NearbyMapContract.java | 1 + .../nearby/mvp/fragments/NearbyMapFragment.java | 15 +++++++++++---- .../mvp/fragments/NearbyParentFragment.java | 2 ++ .../presenter/NearbyParentFragmentPresenter.java | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyMapContract.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyMapContract.java index 1a9cf7cdd..fc1d09895 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyMapContract.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyMapContract.java @@ -33,5 +33,6 @@ public interface NearbyMapContract { void viewsAreAssignedToPresenter(NearbyParentFragmentContract.ViewsAreReadyCallback viewsAreReadyCallback); void addOnCameraMoveListener(MapboxMap.OnCameraMoveListener onCameraMoveListener); void centerMapToPlace(Place place, boolean isPortraitMode); + void removeCurrentLocationMarker(); } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java index f4e68659b..222f09a66 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java @@ -2,10 +2,8 @@ package fr.free.nrw.commons.nearby.mvp.fragments; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.Color; import android.os.Bundle; import android.util.AttributeSet; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,6 +16,7 @@ import com.mapbox.mapboxsdk.annotations.Icon; import com.mapbox.mapboxsdk.annotations.IconFactory; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; +import com.mapbox.mapboxsdk.annotations.Polygon; import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -74,6 +73,8 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment private MapFragment.OnMapViewReadyCallback mapViewReadyCallback; private MapboxMap mapboxMap; private MapView map; + private Marker currentLocationMarker; + private Polygon currentLocationPolygon; private final double CAMERA_TARGET_SHIFT_FACTOR_PORTRAIT = 0.005; private final double CAMERA_TARGET_SHIFT_FACTOR_LANDSCAPE = 0.004; @@ -317,7 +318,7 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment MarkerOptions currentLocationMarkerOptions = new MarkerOptions() .position(new com.mapbox.mapboxsdk.geometry.LatLng(curLatLng.getLatitude(), curLatLng.getLongitude())); currentLocationMarkerOptions.setIcon(icon); // Set custom icon - Marker currentLocationMarker = mapboxMap.addMarker(currentLocationMarkerOptions); + currentLocationMarker = mapboxMap.addMarker(currentLocationMarkerOptions); List circle = UiUtils.createCircleArray(curLatLng.getLatitude(), curLatLng.getLongitude(), curLatLng.getAccuracy() * 2, 100); @@ -326,7 +327,13 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment .addAll(circle) .strokeColor(getResources().getColor(R.color.current_marker_stroke)) .fillColor(getResources().getColor(R.color.current_marker_fill)); - mapboxMap.addPolygon(currentLocationPolygonOptions); + currentLocationPolygon = mapboxMap.addPolygon(currentLocationPolygonOptions); + } + + @Override + public void removeCurrentLocationMarker() { + mapboxMap.removeMarker(currentLocationMarker); + mapboxMap.removePolygon(currentLocationPolygon); } /** diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java index 4927204f3..3c7232892 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java @@ -686,6 +686,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment @Override public void recenterMap(fr.free.nrw.commons.location.LatLng curLatLng) { + nearbyMapFragment.removeCurrentLocationMarker(); + nearbyMapFragment.addCurrentLocationMarker(curLatLng); CameraPosition position; if (ViewUtil.isPortrait(getActivity())){ diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java index 9dae44af1..192fdba66 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java @@ -258,7 +258,7 @@ public class NearbyParentFragmentPresenter } else { // Means location changed slightly, ie user is walking or driving. Timber.d("Means location changed slightly"); - nearbyMapFragmentView.updateMapToTrackPosition(curLatLng); + nearbyParentFragmentView.recenterMap(curLatLng); } }