【问题标题】:Android Mapview: Control ordering of multiple types of OverlayItems?Android Mapview:控制多种类型的 OverlayItems 的排序?
【发布时间】:2012-06-25 00:42:08
【问题描述】:
我已经在这个问题上搜索了一段时间,但得到了王牌。
我有一个简单的地图视图,它使用ManagedOverlay 上的自定义叠加项目,我们称它们为redOverlayItem 和blueOverlayItem。 ManagedOverlay 所做的只是在我的数据库中查询一组不同类型的位置,然后将它们异步放置在地图上。
我的托管覆盖工作正常,但我似乎无法控制“z”排序。例如,有时我有 redOverlayItem 覆盖 blueOverlayItem ,反之亦然,我真的只是希望 redOverlayItem 位于顶部。
我已经想尽办法解决这个问题。如何控制多种叠加项的排序?
【问题讨论】:
标签:
android
android-mapview
itemizedoverlay
【解决方案1】:
好吧,我想通了。
在你的 Overlay 中,你需要重写 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);