如何删除从Osmdroid地图标记

问题描述 投票:0回答:2

我创建一个Android应用程序,我需要在地图上设置标记。而且,由于我的应用程序需要离线功能,我需要使用Osmdroid来解决这个问题。现在我的问题是地图,我可以很容易地通过使用标记或ItemizedOverlay添加它们的标记,但我遇到的问题是,我不能从地图上删除标记。

我已经使用了添加标记的代码是这一个:

    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();

但我对因为删除它是唯一的办法消除他们遇到的问题:

    mapView.getOverlays().clear();

我需要在同一时间删除特定的标记,而不是全部。

java android dictionary osmdroid
2个回答
1
投票

对于删除特定的标记,你应该使用:

    mapView.getOverlays().remove(overlay);
    mapView.invalidate();

0
投票

有添加和删除项目的另一种方式。

首先,你需要这个片断:

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);

应用程序在启动前添加项目,使用此代码:

mOverlay.addItem(new OverlayItem("Title", "Description", new 
GeoPoint(31.7359474,55.4384632))); 

map.getOverlays().add(mOverlay);

在运行应用程序,你可以增加更多项目与下面的代码:

mOverlay.addItem(new OverlayItem("new Title", "new Description", new GeoPoint(Latitude,Longitude)));

去除而应用程序与下面的代码运行的项目:

mOverlay.removeItem(int position);

position是您添加到list.you可以把删除代码到我们在这个答案中使用了onItemSingleTapUpthat第n个项目,这意味着当你在项目挖掘它会从屏幕上删除。

© www.soinside.com 2019 - 2024. All rights reserved.