私はクラスタ化したい約800個のマーカーとクラスター化したくないマーカー80個を使ってAndroidでGoogleマップを使用しています。私はクラスタ化するマーカーのクラスタ化されていないマーカーのClusterManager onMarkerClickListener
、私はクラスタ化したくないマーカーについて
mClusterManager.addItem(annotation);
を使用してClusterManagerのに追加、私はmarkerCollection
Marker marker = mClusterManager.getMarkerCollection().addMarker(annotation.getMarkerOptions());
に直接追加します
ここでannoation
は、カスタムクラスであるAirMapMarkerのインスタンスを指します。ClusterItem
annotation
は、そのような私は、ユーザーがマーカーをタップしたときに使用する必要があります識別文字列などのカスタム情報が含まれています。
問題は、私は、クラスタとmapMarkerの両方のためにonClickListener登録することはできません。そうすると、マップのonMarkerClickListenerだけが起動します。マーカーをクリックし、単一のクラスタ化されていないマーカーの上に起こった場合
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
// Handle marker click fires correctly.
}
}
mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<AirMapMarker>(){
public boolean onClusterItemClick(AirMapMarker marker) {
// Doesn't Fire
}
}
は、今の問題は、onMarkerClickの内側に、私は場合には、AirMapMarkerの一部であり、識別にアクセスする必要があります。私はonMarkerClick
内AirMapMarker
にMarker
をマッピングする方法を見つけ出すことができませんでした。
また、私は完全にmap.setOnMarkerClickListener
を除去してmClusterManager.setOnClusterItemClickListener
にのみ依存してみました。しかし、今の問題は、マーカーのクリックがクラスタの一部ではないマーカー、パラメータnull
とonClusterItemClick
火災で発生したときということです。これは、マーカーをマップに追加するときに、clusterOptionsオブジェクトではなくmarkerOptionsを提供するためです。
ClusterManager内にはクラスタリングを無効にするオプションがありますが、これは特定のマーカーではなくグローバルに発生します。
誰でも私が次に試してみたいことを教えてください。私は右のあなたの質問を理解している場合、私は知らない