私は現在、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 点にまたがらないようにします。
必要なコンストラクターの問題のため、これに対する解決策を思いつくことができません。おそらく、私はそれについて一生懸命考えすぎています...
フィードバックをお寄せください。:)
読んでくれてありがとう。