Как удалить маркеры с карты Osmdroid - PullRequest
0 голосов
/ 07 февраля 2019

Я создаю приложение для 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();

И мне нужно удалитьконкретный маркер вместо всех их одновременно.

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Существует еще один способ добавления и удаления элементов.

Сначала вам понадобится этот фрагмент:

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 - это n-й элемент, который вы добавили в список. Вы можете поместить код удаления в onItemSingleTapUp, который мы используем в этом ответе, это означает, что при нажатии на элемент он будет удален с экрана.

0 голосов
/ 07 февраля 2019

Для удаления определенного маркера вы должны использовать:

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