2016-04-27 22 views
3

私はクラスタ(Googleマップ)のマーカーで作業していますが、onclickメソッドを呼び出すときに情報ウィンドウを表示する際に問題はありません。 問題は、私がマーカーをクリックすることなく情報を開くために行うように、showInfoWindow()メソッドを使用する方法を見つけることができないということです。クラスタマネージャ内のマーカーでshowinfowindow()を呼び出す方法はありますか?

私はマーカー

marker = map.addMarker(new MarkerOptions() 
        .position(position) 
        .snippet(info)); 

を使用する場合、私は、私は、クラスタマネージャの中にマップ上にあるマーカー(ClusterItem)と同じことを行うことができますどのように

marker.showInfoWindow(); 

呼び出しますか?

MarkCluster cluster = new MarkCluster(Lat, Lon, info); 
mClusterManager.addItem(cluster); 

は、それは私がこれを試してみてください enter image description here

+0

ClusterRendererによってマップに追加されたマーカーへの参照を取得する方法を尋ねていますか? (つまり、クラスタを拡大した後に追加されたマーカーへの参照を取得しますか?) –

+0

はい、私が参照を取得したら、インフォーワードウィンドウを呼び出すことができます。私は読んでいて検索していますが、その方法を見つけることはできません。 – robertDraven

+0

'mClusterManager.getMarkerCollection()。getMarkers()'を使うことができますが、あなたが探しているMarker参照を取得するには、リストを調べる必要があります。 –

答えて

5

を情報ウィンドウ表示したいマーカーである、そのクラスタリングを使用しているとき、私はマーカーをマッピングするための参照を取得するために何をしたか:あなたはそれClusterManagerを作成

.setRenderer()メソッドを呼び出しておらず、独自のClusterRenderer実装のインスタンスを渡す場合は、常にDefaultClusterRendererのインスタンスを作成して使用します。 ClusterManagerに独自のキーを作成させる場合は、そのキーを明示的に追加して参照を保持することができます(ClusterManagerにはゲッターメソッドがないため、ClusterRendererへの参照を取得できます)。

mClusterManager = new ClusterManager<ClusterItem>(getActivity(), mMap); 
mRenderer = new DefaultClusterRenderer(getActivity(), mMap, mClusterManager); 
mClusterManager.setRenderer(mRenderer); 
mClusterManager.addItem(ClusterItem); 

マーカーにアクセスする必要がある場合は、ClusterRendererのマーカーに関連付けられたClusterItemを渡します。マーカーはまだ地図上にレンダリングされていない場合

Marker marker = mRenderer.getMarker(ClusterItem); 
if(marker != null){ 
    marker.showInfoWindow(); 
} 

Markerオブジェクトがnullになります:ClusterItemあなたは、マーカーは、あなたが最初にクラスターにマーカーを追加するClusterManagerに渡さClusterItemになります見つけるために使用しますマーカーオブジェクトが使用される前にマーカーオブジェクトがヌルでないことを確認してください。

あなたが特定されている場合は、.getMarker()を呼び出し、マーカーは、あなたが正しいClusterItemオブジェクトを見つけることができることを確認するClusterItemインタフェースを実装するオブジェクトの使用中.equals()方法 をオーバーライドし、まだnullであるとき、マーカーがマップ上に配置されてきましたレンダラーによって保持されます。

+0

ありがとうございます。これはまさに私が探していたものです。私の間違いは、私がClusterManagerを見ていたことです。まだ(mRenderer)をレンダリングしていなければ、マーカーは常にnullを返すことを強調したいと思います。 したがって、onClusterItemRenderedのメソッドが実行されると、私はマーカーを取得します – robertDraven

+0

私は最近この同じ問題を抱えていましたので、私はあなたを助けてくれてうれしいです。 –

関連する問題