【问题标题】:Android Mapview: Control ordering of multiple types of OverlayItems?Android Mapview:控制多种类型的 OverlayItems 的排序?
【发布时间】:2012-06-25 00:42:08
【问题描述】:

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

我有一个简单的地图视图,它使用ManagedOverlay 上的自定义叠加项目,我们称它们为redOverlayItemblueOverlayItem。 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2018-08-30
      • 2014-05-19
      • 2019-01-27
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多