I'm using OSMDroid and have a bunch of different markers and trying to toggle marker overlays on/off using a checkbox setup. I grab a json array and get my data to create my markers as well as their gps location. All that works great.
I can show the markers fine using:
mapView.getOverlays().add(overlay);
but when I try to reverse it using:
mapView.getOverlays().remove(overlay);
Sadly, it only removes the last placed marker and not all of them. Please tell me where my failure lies. Thanks!
EDIT Additional code:
List<OverlayItem> itemList = new ArrayList<OverlayItem>();
GeoPoint geoPoint = new GeoPoint(lat, lng);
overlayItem = new OverlayItem("Title", "Snippet", geoPoint);
overlayItem.setMarker(getResources().getDrawable(R.drawable.marker));
itemList.add(overlayItem);
overlay = new ItemizedOverlayWithFocus<OverlayItem>(getApplicationContext(), itemList,
new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int index, final OverlayItem item) {
// This will do something eventually
return true;
}
@Override
public boolean onItemLongPress(final int index, final OverlayItem item) {
// This will do something eventually
return false;
}
});
mapView.getOverlays().add(overlay);
SOLUTION (This worked for me)
ArrayList<Marker> myMarkers= new ArrayList<>();
Marker myMarker = new Marker(mapView);
myMarker.setPosition(new GeoPoint(lat, lng));
myMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
myMarker.setTitle(TITLE);
myMarker.setIcon(getResources().getDrawable(R.drawable.myMarker));
myMarker.setSnippet(SNIPPET);
mapView.getOverlays().add(myMarker);
myMarkers.add(myMarker);
Then I was able to toggle ALL markers off with:
for (Marker m : myMarkers) {
mapView.getOverlays().remove(m);
}