1

我已经在这个问题上搜索了一段时间,但已经找到了王牌。

我有一个简单的地图视图,它使用 ManagedOverlay 上的自定义叠加项目让我们称它们为redOverlayItemand blueOverlayItem。ManagedOverlay 所做的只是在我的数据库中查询一组不同类型的位置,然后将它们异步放置在地图上。

我的托管覆盖工作正常,但我似乎无法控制“z”排序。例如,有时我有redOverlayItem' 覆盖blueOverlayItem',反之亦然,我真的只是希望redOverlayItem' 位于顶部。

我已经用尽了关于如何解决这个问题的想法。如何控制多种叠加项目的排序?

4

1 回答 1

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);
于 2012-06-25T05:08:06.240 回答