Skip to content

Commit 3494fd0

Browse files
authored
fix-issue-4424 (commons-app#4445)
Co-authored-by: Pratham2305 <Pratham2305@users.noreply.github.com>
1 parent a3cbe36 commit 3494fd0

File tree

1 file changed

+38
-13
lines changed

1 file changed

+38
-13
lines changed

app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,15 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
222222
private PlaceAdapter adapter;
223223
private NearbyParentFragmentInstanceReadyCallback nearbyParentFragmentInstanceReadyCallback;
224224

225+
/**
226+
* Holds filtered markers that are to be shown
227+
*/
228+
private List<NearbyBaseMarker> filteredMarkers;
229+
/**
230+
* Holds all the markers
231+
*/
232+
private List<NearbyBaseMarker> allMarkers;
233+
225234
@NonNull
226235
public static NearbyParentFragment newInstance() {
227236
NearbyParentFragment fragment = new NearbyParentFragment();
@@ -1241,6 +1250,8 @@ public void filterMarkersByLabels(final List<Label> selectedLabels,
12411250
// Remove the previous markers before updating them
12421251
hideAllMarkers();
12431252

1253+
filteredMarkers = new ArrayList<>();
1254+
12441255
for (final MarkerPlaceGroup markerPlaceGroup : NearbyController.markerLabelList) {
12451256
final Place place = markerPlaceGroup.getPlace();
12461257

@@ -1272,6 +1283,9 @@ public void filterMarkersByLabels(final List<Label> selectedLabels,
12721283
updateMarker(markerPlaceGroup.getIsBookmarked(), place, NearbyController.currentLocation);
12731284
}
12741285
}
1286+
1287+
mapBox.clear();
1288+
mapBox.addMarkers(filteredMarkers);
12751289
}
12761290

12771291
@Override
@@ -1289,25 +1303,35 @@ public void updateMarker(final boolean isBookmarked, final Place place, @Nullabl
12891303
VectorDrawableCompat vectorDrawable = VectorDrawableCompat.create(
12901304
getContext().getResources(), getIconFor(place, isBookmarked), getContext().getTheme());
12911305

1292-
for (Marker marker : mapBox.getMarkers()) {
1293-
if (marker.getTitle() != null && marker.getTitle().equals(place.getName())) {
1306+
if(curLatLng != null) {
1307+
for (NearbyBaseMarker nearbyMarker : allMarkers) {
1308+
if (nearbyMarker.getMarker().getTitle() != null && nearbyMarker.getMarker().getTitle().equals(place.getName())) {
1309+
1310+
final Bitmap icon = UiUtils.getBitmap(vectorDrawable);
12941311

1295-
final Bitmap icon = UiUtils.getBitmap(vectorDrawable);
1296-
if (curLatLng != null) {
12971312
final String distance = formatDistanceBetween(curLatLng, place.location);
12981313
place.setDistance(distance);
1299-
}
13001314

1301-
final NearbyBaseMarker nearbyBaseMarker = new NearbyBaseMarker();
1302-
nearbyBaseMarker.title(place.name);
1303-
nearbyBaseMarker.position(
1315+
final NearbyBaseMarker nearbyBaseMarker = new NearbyBaseMarker();
1316+
nearbyBaseMarker.title(place.name);
1317+
nearbyBaseMarker.position(
13041318
new com.mapbox.mapboxsdk.geometry.LatLng(
1305-
place.location.getLatitude(),
1306-
place.location.getLongitude()));
1307-
nearbyBaseMarker.place(place);
1308-
nearbyBaseMarker.icon(IconFactory.getInstance(getContext())
1319+
place.location.getLatitude(),
1320+
place.location.getLongitude()));
1321+
nearbyBaseMarker.place(place);
1322+
nearbyBaseMarker.icon(IconFactory.getInstance(getContext())
13091323
.fromBitmap(icon));
1310-
marker.setIcon(IconFactory.getInstance(getContext()).fromBitmap(icon));
1324+
nearbyMarker.setIcon(IconFactory.getInstance(getContext()).fromBitmap(icon));
1325+
filteredMarkers.add(nearbyBaseMarker);
1326+
}
1327+
}
1328+
} else {
1329+
for (Marker marker : mapBox.getMarkers()) {
1330+
if (marker.getTitle() != null && marker.getTitle().equals(place.getName())) {
1331+
1332+
final Bitmap icon = UiUtils.getBitmap(vectorDrawable);
1333+
marker.setIcon(IconFactory.getInstance(getContext()).fromBitmap(icon));
1334+
}
13111335
}
13121336
}
13131337
}
@@ -1348,6 +1372,7 @@ private void hideAllMarkers() {
13481372

13491373
private void addNearbyMarkersToMapBoxMap(final List<NearbyBaseMarker> nearbyBaseMarkers, final Marker selectedMarker) {
13501374
if (isMapBoxReady && mapBox != null) {
1375+
allMarkers = new ArrayList<>(nearbyBaseMarkers);
13511376
mapBox.addMarkers(nearbyBaseMarkers);
13521377
setMapMarkerActions(selectedMarker);
13531378
presenter.updateMapMarkersToController(nearbyBaseMarkers);

0 commit comments

Comments
 (0)