user1174838
user1174838

Reputation: 323

Programmatically adding and removing markers

I've been following the NooYawk MapView example with reasonable success. I've replaced the hardcoded geopoints and descriptions based on some system update messages. New markers are added just fine when a new update occurs. The problem is the markers don't go away when the problem is resolved.

I'd be happy enough to remove all markers on press of the refresh button as they get added back in.

Any ideas?

The below is somewhat sanitized.

private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
    private List<OverlayItem> items=new ArrayList<OverlayItem>();
    private Drawable marker=null;

    public SitesOverlay(Drawable marker) {
        super(marker);
        this.marker=marker;

        try {
            data = getData();
        } catch (MalformedURLException e) {
            //
        }

        if (!data.equals("")) {
                            // process data
            for (Integer i = 0; i < outages.length; i++) {
                items.add(new OverlayItem(
                    getPoint(lat, lng, headerMsg, bodyMsg));
            }
        }

        populate();
    }

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

    @Override
    public void draw(Canvas canvas, MapView mapView,
                boolean shadow) {
        super.draw(canvas, mapView, false);
        boundCenterBottom(marker);
    }

    @Override
    protected boolean onTap(int i) {
        Toast.makeText(getBaseContext(),
            items.get(i).getSnippet(),
            Toast.LENGTH_LONG).show();
        return(true);
    }

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

Upvotes: 0

Views: 1137

Answers (1)

Samir Mangroliya
Samir Mangroliya

Reputation: 40406

on Refresh Button click mapview.getOverlays().clear(); Then start push pin in map and after adding Overlays you should mapview.postinvalidate()

Upvotes: 4

Related Questions