Как очистить / сбросить ItemizedOverlay в Android? - PullRequest
4 голосов
/ 29 ноября 2010

У меня есть программа, которая создает ItemizedOverlay и карту. Все отлично работает при запуске.

При закрытии и повторном открытии приложения я использую onRestart () для получения обновленной информации с моего сервера и обновления карты. Проблема заключается в том, что на этом этапе ItemizedOverlay по-прежнему содержит старые элементы, а затем продолжает добавлять новые данные к существующим данным.

Я ищу способ очистить наложенный элемент. Кажется, что нет ItemizedOveraly.clear или любой другой подобной функции.

Идеи о том, как я могу это сделать / почему это не очевидно?

Ответы [ 2 ]

13 голосов
/ 29 ноября 2010

Типичное пользовательское наложение выглядит следующим образом.он инкапсулирует различные элементы OverlayItem, отображаемые на карте в виде списка.

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem>{

    private List<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

    public MyItemizedOverlay(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));        
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlays.get(i);
    }

    public void addOverlay(OverlayItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    public void removeOverlay(OverlayItem overlay) {
        mOverlays.remove(overlay);
        populate();
    }


    public void clear() {
        mOverlays.clear();
        populate();
    }

    @Override
    public int size() {
        return mOverlays.size();
    }
}

Можно использовать методы для добавления / удаления отдельных элементов overlayitems, а также для удаления всех элементов overlayitems (метод clear).

Удалить один оверлейный элемент

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.removeOverlay(overlay);

Добавить один оверлейный элемент

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));

Удалить все оверлейные элементы

MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
sitesOverlay.clear();
1 голос
/ 29 ноября 2010

Вы создаете свой собственный подкласс ItemizedOverlay при использовании MapView. Вы можете добавить метод clear(), если хотите.

...