GoogleMapsクラスタリングを使用しています。私には4つの異なるタイプのマーカーがあり、それぞれが1つの抽象クラスから拡張され、それぞれにowmアイコンがあり、MarkerOptionsフィールドで定義されています。この抽象クラスにはClusterManagerを使用しています。使うだけで
//marker is instance of one of extended classes and has abstract class type
clusterManager.addItem(marker);
クラスタリング後、アイコンをデフォルトに設定します。どうすればこれを修正できますか?私はこのようなものを使おうとしていました:
//marker is abstract marker, getMarker returns the MarkerOptions of this marker
clusterManager.getMarkerCollection().addMarker(marker.getMarker());
しかし、それも機能しません。マーカーはマップ上に必要なアイコンとともに印刷されますが、クラスタリングは行われません。
抽象クラスにメソッドを作成する必要がありますか、それともDefaultClusterRendererから拡張してこれを行う方法がありますか?グーグルを使ったり、グーグルマップライブラリを学んだりして、それに関する情報を見つけられませんでした。
助けてくれてありがとう!
だから、それは私の愚かでした。繰り返しになりますが、図書館を勉強して、もっと注意を払う必要があることを示しています。誰かが答えに興味を持っているなら、ここにあります:私は、DefaultClusterRendererのいくつかのメソッドをオーバーライドする必要があると正しく思っていました。したがって、完全な方法:独自のクラスを作成し、DefaultClusterRendererから拡張します。
public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>
次に、メソッドをオーバーライドしますonBeforeClusterItemRendered:
@Override
protected void onBeforeClusterItemRendered(AbstractMarker item,
MarkerOptions markerOptions) {
markerOptions.icon(item.getMarker().getIcon());
}
方法はかなり単純ですが、クラスタリングの動作が遅くなり始めたように私には思えます。だから、それで十分です。