问题
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 onItemSingleTapUpthat 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