2012-06-25 47 views
1

我已經在這個問題上搜索了一段時間,但已經出現了王牌。Android Mapview:控制多種OverlayItems的排序?

我有一個簡單的mapview,使用ManagedOverlay上的自定義覆蓋項,我們稱之爲redOverlayItemblueOverlayItem。所有ManagedOverlay都會查詢我的數據庫以獲取一組不同類型的位置,然後將它們異步放置在地圖上。

我的託管覆蓋工作正常,但我似乎無法控制「z」的順序。例如,有時候我有redOverlayItem覆蓋了blueOverlayItem,反之亦然,我真的只希望redOverlayItem位居榜首。

我已經用盡了我的想法如何解決這個問題。我如何控制多種類型的重疊項目的排序?

回答

1

好吧夥計們,我想通了。

在你覆蓋,你需要重寫getIndexToDraw

//Overriding to return add order rather than latitude order. 
protected int getIndexToDraw(int drawingOrder) { 
    return drawingOrder; 
} 

而不是調用super.getIndexToDraw(INT),它返回緯度值訂購的商品,所有我現在做的是返回的順序他們被添加。然後,我爲我的覆蓋數組做了相應的排序(我使用Rob Carmick的BeanComparator,但您可以使用任何排序功能)

BeanComparator bc = new BeanComparator(CustomOverlayItem.class, "getIsRed"); 
Collections.sort(overlayItemsArray, bc);