@@ -222,6 +222,15 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment
222
222
private PlaceAdapter adapter ;
223
223
private NearbyParentFragmentInstanceReadyCallback nearbyParentFragmentInstanceReadyCallback ;
224
224
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
+
225
234
@ NonNull
226
235
public static NearbyParentFragment newInstance () {
227
236
NearbyParentFragment fragment = new NearbyParentFragment ();
@@ -1241,6 +1250,8 @@ public void filterMarkersByLabels(final List<Label> selectedLabels,
1241
1250
// Remove the previous markers before updating them
1242
1251
hideAllMarkers ();
1243
1252
1253
+ filteredMarkers = new ArrayList <>();
1254
+
1244
1255
for (final MarkerPlaceGroup markerPlaceGroup : NearbyController .markerLabelList ) {
1245
1256
final Place place = markerPlaceGroup .getPlace ();
1246
1257
@@ -1272,6 +1283,9 @@ public void filterMarkersByLabels(final List<Label> selectedLabels,
1272
1283
updateMarker (markerPlaceGroup .getIsBookmarked (), place , NearbyController .currentLocation );
1273
1284
}
1274
1285
}
1286
+
1287
+ mapBox .clear ();
1288
+ mapBox .addMarkers (filteredMarkers );
1275
1289
}
1276
1290
1277
1291
@ Override
@@ -1289,25 +1303,35 @@ public void updateMarker(final boolean isBookmarked, final Place place, @Nullabl
1289
1303
VectorDrawableCompat vectorDrawable = VectorDrawableCompat .create (
1290
1304
getContext ().getResources (), getIconFor (place , isBookmarked ), getContext ().getTheme ());
1291
1305
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 );
1294
1311
1295
- final Bitmap icon = UiUtils .getBitmap (vectorDrawable );
1296
- if (curLatLng != null ) {
1297
1312
final String distance = formatDistanceBetween (curLatLng , place .location );
1298
1313
place .setDistance (distance );
1299
- }
1300
1314
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 (
1304
1318
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 ())
1309
1323
.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
+ }
1311
1335
}
1312
1336
}
1313
1337
}
@@ -1348,6 +1372,7 @@ private void hideAllMarkers() {
1348
1372
1349
1373
private void addNearbyMarkersToMapBoxMap (final List <NearbyBaseMarker > nearbyBaseMarkers , final Marker selectedMarker ) {
1350
1374
if (isMapBoxReady && mapBox != null ) {
1375
+ allMarkers = new ArrayList <>(nearbyBaseMarkers );
1351
1376
mapBox .addMarkers (nearbyBaseMarkers );
1352
1377
setMapMarkerActions (selectedMarker );
1353
1378
presenter .updateMapMarkersToController (nearbyBaseMarkers );
0 commit comments