我想要什麼:中的AsyncTask添加覆蓋項目以OSMDroid地圖
我想在user's當前位置10個標誌和地圖,加載後在加載的AsyncTask從數據庫地圖。
什麼doenst工作
一切工作正常,除了10個額外的標記。我從DB加載它們,將它們添加到OverlayItems列表中,並使地圖無效 - 它們仍未顯示。
更新:現在工作:通過在之後創建ItemizedIconOverlay ,將其他項目加載到AsyncTask中,將顯示項目並按照要求工作。
此外,OverlayItem列表初始化爲零對象(顯然),但是在添加一個OverlayItem之後,它包含1個OverlayItem + 11個更多的null-Objects(或null-Refernces?null-Items?什麼是正確的稱呼)
我的問題
1)@ OverlayItems列表:?加載一切之後,還有一個空的對象,我想這可能會造成問題,但它沒有。 (測試完整列表,沒有區別)
爲什麼列表初始化爲零項,但是當我添加一個時,它包含12個項目? (11空,1「真正的」項目)(下面的代碼)
2)[解決]據我知道,如果我添加OverlayItems到列表和無效的地圖,他們應該顯示。如果我將項目添加到第二個列表中,並用第二個「覆蓋」第一個項目,它是否仍然有效? (由於it's不是同一個對象了,但僅僅是一個參考,以列表2,對不對?)
更新:後通過創建ItemizedIconOverlay 加載在的AsyncTask其他項目的項目顯示和工作爲inteded。
全碼
創建地圖
mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapController = this.mapView.getController();
mapController.setZoom(25);
GeoPoint center = new GeoPoint(DataManager.glat, DataManager.glon);
mapController.setCenter(center);
// items = null
items = new ArrayList<OverlayItem>(); // items is still empty
items.add(new OverlayItem("Here", "SampleDescription", center));
// now, items contains one OverlayItem, but also 11 empty (null) Items
this.mLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items,
new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() {
@Override
public boolean onItemSingleTapUp(final int index,
final OverlayItem item) {
Intent intent=new Intent();
intent.putExtra("newShopName", item.mTitle);
intent.putExtra("newShopAdd", item.mDescription);
setResult(RESULT_OK, intent);
finish();
return true;
}
@Override
public boolean onItemLongPress(final int index,
final OverlayItem item) {
toast = Toast.makeText(ShopChooseActivity.this, item.mTitle + ", " + item.mDescription, Toast.LENGTH_LONG);
toast.show();
return false;
}
}, mResourceProxy);
this.mapView.getOverlays().add(this.mLocationOverlay);
mapView.invalidate();
loadMap = new LoadChooseShop(ShopChooseActivity.this, items).execute();
從AsynTask更新與OverlayItems的新列表中的項目
items = loadMap.get();
if(items != null)
mapView.invalidate();
@ 1)我已經解決了這個問題,在您的幫助[這裏](http://stackoverflow.com/問題/ 17566421/osmdroid-crashes-when-zooming-out),忘記編輯問題 @ 2)好的解釋 –