0

現在、OSMdroid ライブラリの ItemizedIconOverlay を使用しています

import org.osmdroid.views.overlay.ItemizedIconOverlay;

そして、私は自分のパラメータをこのように設定しました:

public class OsmActivity extends Activity implements LocationListener{
    private ItemizedIconOverlay<OverlayItem> mMyLocationOverlay
...
}

そして、私はこの方法でアイテムを追加します:

    mItems.add(new OverlayItem("Title 2", "Sample Description2", new GeoPoint((int)(35.1359488*1E6),(int)(33.3336289*1E6))));
    mItems.add(new OverlayItem("Title 3", "Sample Description3", new GeoPoint((int)(35.1259488*1E6),(int)(33.3436289*1E6))));
    this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, myCustomIconMarker, new Glistener(), mResourceProxy);

この ItemizedOverlayWithFocus でこれを行うにはどうすればよいですか?

http://code.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/org/osmdroid/views/overlay/ItemizedOverlayWithFocus.java?r=802

これは私を混乱させているものです:

ItemizedOverlayWithFocus<T extends OverlayItem> extends ItemizedOverlay<T>

T とはどういう意味ですか?

誰かがそれを使用するサンプルコードを投稿できますか?

4

1 に答える 1

1

これをバックアップするコードを実際に書いてみたことはありませんが、問題のコードをざっと見てみると、実行していることとまったく同じことができるはずですが、ItemizedIconOverlay を ItemizedOverlayWithFocus に置き換えます。

これはすべて、ジェネリックとテンプレート化、つまりよりタイプ セーフなオブジェクトを作成できるようにする概念に関係しています。

したがって、ItemizedIconOverlay がある場合、ItemizedIconOverlay の内部は OverlayItems (またはそのサブクラス) でのみ機能すると言っています。

同じことが ItemizedOverlayWithFocus に適用されます

つまり、コンストラクター (およびコンストラクターに入れるすべての項目配列など) を作成するとき、シェブロン <> で指定するデータの型は OverlayItem 型であるか、OverlayItem を拡張する必要があります。

理論的には、コードを次のように変更できます

    private ItemizedOverlayWithFocus<OverlayItem> mMyLocationOverlay;
...
mItems.add....

WithFocus クラスには、上記で使用したものとは異なるコンストラクターがあるため、トリックにはコンストラクターが付属しています (コンテキスト オブジェクトが必要なアクティビティ クラスにいる限り、これは機能します)。

    this.mMyLocationOverlay = newItemizedOverlayWithFocus<OverlayItem>(this, mItems, new GListener());

または this.mMyLocationOverlay = newItemizedOverlayWithFocus(this, mItems, new GListener(), mResourceProxy);

または(この空白の引用された「空白」を埋める必要があります)

    this.mMyLocationOverlay = newItemizedOverlayWithFocus<OverlayItem>(this, mItems, 'Drawable marker', 'Point markerHotspot', 'Drawable markerFocusedBase', 'Point markerFocusedHotspot', 'int focusedBackgroundColour', new GListener(), mResourceProxy);
于 2012-05-11T12:50:24.210 に答える