问题
I'm creating an Android Application where i need to set markers on the map. And since my App requires Offline function i need to use Osmdroid to solve this problem. Now my issue is the markers on the map, which i can easily add them by using Markers or the ItemizedOverlay, but the issue i'm having is that i cannot remove markers from the map.
The code i have used for adding markers is this one:
Marker marker = new Marker(mapView);
marker.setPosition(new GeoPoint(41.3746312,19.7710733));
marker.setIcon(getResources().getDrawable(R.drawable.marker));
marker.setImage(getResources().getDrawable(R.drawable.marker));
marker.setTitle("Marker");
marker.setInfoWindow(null);
marker.showInfoWindow();
mapView.getOverlays().add(marker);
mapView.invalidate();
but i'm encountering issues on removing them since the only way to remove it is:
mapView.getOverlays().clear();
And i need to remove a specific marker instead of all of them at the same time.
回答1:
For removing specific marker you should use:
mapView.getOverlays().remove(overlay);
mapView.invalidate();
回答2:
There is Another way of adding and removing items.
first, you need this snippet :
ArrayList<OverlayItem> items = items = new ArrayList<OverlayItem>();
ItemizedOverlayWithFocus<OverlayItem> mOverlay = mOverlay = new ItemizedOverlayWithFocus<OverlayItem>(items,
new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int position, final OverlayItem item) {
//do something
return true;
}
@Override
public boolean onItemLongPress(final int position, final OverlayItem item) {
return false;
}
}, getApplicationContext());
mOverlay.setFocusItemsOnTap(true);
to add items before app starting, use this code :
mOverlay.addItem(new OverlayItem("Title", "Description", new
GeoPoint(31.7359474,55.4384632)));
map.getOverlays().add(mOverlay);
while running the app you can add more items with below code :
mOverlay.addItem(new OverlayItem("new Title", "new Description", new GeoPoint(Latitude,Longitude)));
removing items while the app is running with below code :
mOverlay.removeItem(int position);
the position
is the n-th item you added to list.you can put remove code into onItemSingleTapUp
that we use up in this answer, that means when you tap on item it will remove from screen.
来源:https://stackoverflow.com/questions/54574152/how-to-remove-markers-from-osmdroid-map