0

私は現在、MapView を利用してオーバーレイを追加するアプリケーションに取り組んでいます。基本的に、一度にオーバーレイ リストが 2 つを超えることはありません。

これが私がやろうとしたことです...

ItemizedOverlay クラス (MyFriendOverlay) を拡張し、その拡張クラス内にプライベート ArrayList オブジェクトを作成して、オーバーレイをアタッチします。でも; 解決方法がわからない問題に遭遇しました。このコード セグメントを見ると、次のようになります。

ImageView mapMarker = new ImageView(getApplicationContext()); mapMarker.setImageResource(R.drawable.markertrp);

myPointsToShow = new myFriendOverlay(mapMarker.getDrawable(), getApplicationContext());

ここでわかるように、ドローアブルに基づくアイコンを使用して ImageView を作成しました。この後、ItemizedOverlay からの拡張クラスができました。コンストラクターでは、ドローアブルとコンテキストの 2 つのパラメーターを取ります。

私が知っていることから、以下のコンストラクターが必要です (おそらく変更できます):

public myFriendOverlay(Drawable defaultMarker, Context context)

ここでの問題は、myPointsToShow の新しいインスタンスを作成し続けることです。これは、拡張クラスで使用したい ArrayList があるため、オーバーレイを直接制御できるためです。毎回新しいものをインスタンス化することで、リスト自体に実際に追加することはありません。

要するに:

私が望むのは、アプリケーションに 2 つのポイント (A と B) があり、たとえば B に対して新しい場所が検出された場合、オーバーレイ リストから B を削除し、新しい場所に置き換えることだけです。そしてAも同様です。簡単にするために、インデックス 0 を A に、インデックス 1 を B に付けて、2 点にまたがらないようにします。

必要なコンストラクターの問題のため、これに対する解決策を思いつくことができません。おそらく、私はそれについて一生懸命考えすぎています...

フィードバックをお寄せください。:)

読んでくれてありがとう。

4

1 に答える 1

1

私の経験から、私がしていることは次のとおりです。

  • 表示する画像の種類ごとにアイテム オーバーレイを作成します。
  • オーバーレイごとのアイテムのリストがそれほど長くない場合は、インテント内に渡します。

R.drawable.somethingところで、オーバーレイに使用する必要があります。を作成する必要はありませんImageView

私はこのアンドロイド ライブラリをマップに使用しています: android-mapviewballoons。見てみな!

于 2010-12-19T13:57:14.270 に答える