How to remove Markers from Osmdroid Map

。_饼干妹妹 提交于 2020-01-03 06:27:40

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!