2016-11-29 7 views
0

Googleマップのクラスタリングユーティリティを使用しています。デフォルトの実装は大丈夫ですが、アイテムが比較的離れていても、アイテムがクラスタにグループ化されていることは何度もあります。距離に基づくGoogleマップによるクラスタリング

アイテムがグループ化されているアイテム間の距離を特定するにはどうすればよいですか?もちろんこれはズームレベルに基づいて変更する必要があります。

答えて

0

source codeは見やすい場所です!コメントに基づいてhere

public static final int MAX_DISTANCE_AT_ZOOM = 100; //本質的に100 dp。

クラスタの「中心」から約100dpのものは、一緒にクラスタ化されます。したがって、クラスタ内の2つのポイントは決して200dpを超えてはなりません。また、「中心」はクラスタの中央ではなく、むしろクラスタのシードとして選択されたマーカであることに注意してください。これにより、アルゴリズムはアイテムが追加される順序に敏感になります。ドキュメントからのアルゴリズムの説明 - それらが追加された順にアイテム上

  1. 反復(候補クラスタ)
  2. アイテムの中心とクラスターを作成します。
  3. クラスタと一定の距離内にあるすべてのアイテムを追加します。
  4. 既存のクラスタから別のクラスタに近いアイテムを移動します。
  5. これらの項目を候補クラスタのリストから削除します。

    クラスタには、最初の要素の中心があります(内の項目の重心ではありません)。

+0

この値はどのように変更できますか?私はコードを見ることはできますが、それを変更することはできません(ここは瓶です)。また、何らかの理由で、この定数はアルゴリズムのコードでも使用されていません(ただし、ここで与えたリンクで使用されるはずの場所を見つけるのは簡単です)。 –

+0

ライブラリの独自のバージョンをコンパイルする必要があるように見えます。 – iagreen

+0

clusterManager.setAlgorithm(新しいMyClusterAlgorithm()); 上記のソースからコードをコピーしてコピーし、独自のアルゴリズムを作成してください。 – Bolling

関連する問題