2016-05-10 11 views
-2

たとえば、同じマーカーを別の配列リストに追加するにはどうすればいいですか?私は5つの配列リストと7つのマーカーを挙げましょう。私はマップにマーカを追加し、対応するリストに各マーカを追加し、ユーザが選択したリストに従ってマーカを表示または非表示にします。リストには異なるマーカーが含まれているとすべて正常に機能しますが、2つのリストに共通マーカーがある場合、共通マーカーは最後に追加されたリストにのみ保持されます。同じマーカーを別のArrayListに追加できますか?

List<Marker> firstList = new ArrayList<>(); 
List<Marker> secondList= new ArrayList<>(); 
List<Marker> thirdList= new ArrayList<>(); 
List<Marker> fourthList= new ArrayList<>(); 
List<Marker> fifthList= new ArrayList<>(); 

Marker marker1 = mMap.addMarker(new MarkerOptions().position(latLong1).title("MARKER1").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker1")); 
Marker marker2 = mMap.addMarker(new MarkerOptions().position(latLong2).title("MARKER2").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker2")); 
Marker marker3 = mMap.addMarker(new MarkerOptions().position(latLong3).title("MARKER3").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker3")); 
Marker marker4 = mMap.addMarker(new MarkerOptions().position(latLong4).title("MARKER4").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker4")); 
Marker marker5 = mMap.addMarker(new MarkerOptions().position(latLong5).title("MARKER5").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker5")); 
Marker marker6 = mMap.addMarker(new MarkerOptions().position(latLong6).title("MARKER6").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker6")); 
Marker marker7 = mMap.addMarker(new MarkerOptions().position(latLong7).title("MARKER7").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker7")); 

firstList.add(marker1); 
secondList.add(marker2); 
secondList.add(marker3); 
thirdList.add(marker1); 
thirdList.add(marker4); 
fourthList.add(marker5); 
fifthList.add(marker6); 
fifthList.add(marker7); 
fifthList.add(marker1); 
fifthList.add(marker2); 

だから私が表示されますthirdListだけmarker4をフィルタリング場合、私は、何のマーカーが表示されませんfirstListをフィルタリングた場合、私は例えばリストによってマーカーをフィルタリングし、私はアルよりfifthListをフィルタリングあればマーカーがなるときmarker1を含む表示されます。したがって、リストには最後に追加された共通アイテムのみが保持されます。だから、他のリストに共通しているにもかかわらず、リストがすべてのオブジェクトを保持するようにするにはどうしたらいいですか?

ありがとうございます!

UPDATE:

これはあなたが提案し、まさにあれば、私は知りませんが、私はこれをしなかったし、今のフィルタが正常に動作しています。これを行うことによって私は別の問題を抱えています。

List<Marker> firstList = new ArrayList<>(); 
List<Marker> secondList= new ArrayList<>(); 
List<Marker> thirdList= new ArrayList<>(); 
List<Marker> fourthList= new ArrayList<>(); 
List<Marker> fifthList= new ArrayList<>(); 

firstList.add(mMap.addMarker(new MarkerOptions().position(latLong1).title("MARKER1").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker1"))); 
secondList.add(mMap.addMarker(new MarkerOptions().position(latLong2).title("MARKER2").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker2"))); 
secondList.add(mMap.addMarker(new MarkerOptions().position(latLong3).title("MARKER3").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker3"))); 
thirdList.add(mMap.addMarker(new MarkerOptions().position(latLong1).title("MARKER1").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker1"))); 
thirdList.add(mMap.addMarker(new MarkerOptions().position(latLong4).title("MARKER4").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker4"))); 
fourthList.add(mMap.addMarker(new MarkerOptions().position(latLong5).title("MARKER5").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker5"))); 
fifthList.add(mMap.addMarker(new MarkerOptions().position(latLong6).title("MARKER6").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker6"))); 
fifthList.add(mMap.addMarker(new MarkerOptions().position(latLong7).title("MARKER7").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker7"))); 
fifthList.add(mMap.addMarker(new MarkerOptions().position(latLong1).title("MARKER1").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker1"))); 
fifthList.add(mMap.addMarker(new MarkerOptions().position(latLong2).title("MARKER2").icon(BitmapDescriptorFactory.fromResource(R.drawable.icon)).snippet("Snippet marker2"))); 

ここで、マーカー情報ウィンドウにOnInfoWindowClickListenerを追加します。各マーカーは新しいアクティビティを開く必要があります。この変更を行う前に、すべてのマーカーをプライベートマップに追加していました。allMarkersMap = new HashMap();私はすべてのマーカーをHashMapにallMarkersMap.put(marker1、Marker1.class)で追加していました。

GoogleMap.OnInfoWindowClickListener MyOnInfoWindowClickListener = new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     Class cls = allMarkersMap.get(marker); 
     Intent intent = new Intent(MainActivity.this, cls); 
     startActivity(intent); 
    } 
}; 

どうすればいいですか?

答えて

0

マーカーには同じ参照がありますが、この動作につながります。 マーカーを作成して渡す代わりに、MarkerOptionsを作成し、配列リストにマーカーを追加するときには、新しいMarkerを作成する必要があります。 MarkerOptionsは、マーカーに必要な情報を保持するオブジェクトです。これは、一度インスタンス化する必要がある唯一のオブジェクトです。

+0

私にコード例を教えてください。 –

+0

上記のコードを更新しました。今、フィルタは動作していますが、別の問題が発生しました。編集した質問を見てください。 –

関連する問題