我已经在这个问题上寻找了一段时间,但已经取得了胜利。
我有一个简单的地图视图,可以使用ManagedOverlay上的自定义重叠项,让我们称之为redOverlayItem
和blueOverlayItem
。所有ManagedOverlay都会查询我的数据库,查找不同类型的一组位置,然后将它们异步放置在地图上。
我的托管叠加层工作正常,但我似乎无法控制“z”排序。例如,有时我会redOverlayItem
覆盖blueOverlayItem
,反之亦然,我真的只希望redOverlayItem
位于首位。
我已经用尽了如何解决这个问题的想法。如何控制多种叠加项的排序?
答案 0 :(得分: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);