From 4b83037299afb9df23231315cb827e31cc970502 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 66ae0a010..51284860f 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; @@ -77,6 +78,7 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { private Animation rotate_forward; private Place place; + private Marker selected; public NearbyMapFragment() { } @@ -136,6 +138,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; } } @@ -253,8 +257,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); @@ -328,6 +339,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);