1

私はこの問題についてしばらく検索しましたが、切り札が出てきました。

ManagedOverlayでカスタム オーバーレイ アイテムを使用する単純な mapview があります。それらredOverlayItemを and と呼びましょう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 に答える