From e5d914051c03404f32bbc2558b4365fe2271d77d Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Sat, 30 Dec 2017 17:16:45 -0600 Subject: [PATCH] Map marker selection and footer visibility now track together. --- .../free/nrw/commons/nearby/NearbyMapFragment.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java index 7a15b70b3..690917659 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java @@ -24,6 +24,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.mapbox.mapboxsdk.Mapbox; +import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.camera.CameraPosition; @@ -76,6 +77,7 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { private Animation rotate_forward; private Place place; + private Marker selected; public NearbyMapFragment() { } @@ -135,6 +137,8 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { else if (bottomSheetDetailsBehavior.getState() == BottomSheetBehavior .STATE_COLLAPSED) { bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + mapView.getMapAsync(MapboxMap::deselectMarkers); + selected=null; return true; } } @@ -250,8 +254,15 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { mapView.getMapAsync(mapboxMap -> { mapboxMap.addMarkers(baseMarkerOptions); + mapboxMap.setOnInfoWindowCloseListener(marker -> { + if (marker == selected){ + bottomSheetDetailsBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); + } + }); + mapboxMap.setOnMarkerClickListener(marker -> { if (marker instanceof NearbyMarker) { + this.selected = marker; NearbyMarker nearbyMarker = (NearbyMarker) marker; Place place = nearbyMarker.getNearbyBaseMarker().getPlace(); passInfoToSheet(place); @@ -325,6 +336,7 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { this.getView().requestFocus(); break; case (BottomSheetBehavior.STATE_HIDDEN): + mapView.getMapAsync(MapboxMap::deselectMarkers); transparentView.setClickable(false); transparentView.setAlpha(0); closeFabs(isFabOpen);