一個典型的自定義覆蓋看起來像這樣。它將地圖上顯示的各種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();
}
}
方法可以暴露添加/刪除個別覆蓋圖,但也可以刪除所有覆蓋圖(清除方法)。
刪除單個overlayitem
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0);
sitesOverlay.removeOverlay(overlay);
添加一個overlayItem
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0);
sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));
刪除所有overlayItems
MyItemizedOverlay sitesOverlay = (MyItemizedOverlay) map.getOverlays().get(0);
sitesOverlay.clear();
當觸摸地圖(被移除物品的位置)時,我遇到`ArrayIndexOutOfBoundsException`,甚至調用`clear()`和`populate()`。 解決方法是在`populate`之前調用`setLastFocusedIndex(-1)`,請在[本文]中找到詳細信息(http://bit.ly/ID45TU) – xinthink 2012-04-12 08:17:18