2012-10-19 49 views
0

我有一個擴展ItemizedOverlay<OverlayItem>的類來在MapView上放置200個標記。 現在我想要1個特定標記始終位於其他頂部。將特定覆蓋圖移動到頂部

我該怎麼做?

這是我如何添加標記,以覆蓋:

boolean isTopMarker; 
for (Location location : locationList) { 
    isTopMarker = location.getTitle().equals("MyMarker"); 
    markerOverlay.addOverlayItem(location.getLatitude(), location.getLongitude(), location.getTitle(), isTopMarker); 
} 
markerOverlay.moveTopMarkerToTop(); 

MarkerOverlay類中的方法:

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

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

public void addOverlayItem(OverlayItem overlayItem, boolean isTopMarker) { 
    if (isTopMarker) { 
     Drawable markerDrawable = getResources().getDrawable(R.drawable.marker_top); 
     boundCenterBottom(markerDrawable); 
     overlayItem.setMarker(markerDrawable); 
     topMarkerOverlayItem = overlayItem; 
    } 
    mOverlays.add(overlayItem); 
    populate(); 
} 

public void addOverlayItem(double latitude, double longitude, String title, boolean isTopMarker) { 
    GeoPoint point = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000)); 
    OverlayItem overlayItem = new OverlayItem(point, title, null); 
    addOverlayItem(overlayItem, isTopMarker); 
} 

public void moveTopMarkerToTop(){ 
    if(topMarkerOverlayItem != null){ 
     //What to do here? 
    } 
} 

我試圖reassing標記DrawabletopMarkerOverlayItem,即沒有工作。我也嘗試刪除並將topMarkerOverlayItem添加到OverlayItem s的列表中。

回答

2

嘗試爲您的特殊標記額外添加ItemizedOverlay,並在MapView.getOverlays()列表的末尾添加ItemizedOverlayMapView將遍歷從0開始到Overlays.count()的所有Overlays。這樣你的特殊覆蓋層應該被畫成最後一個,因此總是在最上面!