2

この答えのおかげで、私は自分の問題に対する一時的な解決策を思いつくことができました。

ただし、毎日増加する6000ポイントのリストでは、ますます遅くなっています。

サードパーティのサービス*を利用できないため、独自の解決策を考え出す必要があります。

これが私の要件です:

  1. 座標のクラスタリングは、マップの任意のズームレベルで機能する必要があります。

  2. すべてのクラスターをキャッシュする必要があります

  3. 理想的には、新しいポイントが追加された場合、すべてのポイントでクラスター化(距離の計算)する必要はありません。

これまで、マップの4つの境界を返し、マップの表示可能なセクション内にある座標を返すクアッドツリーを実装しました。

私が必要としているのは、これが簡単ではないことを知っています。DB(postgres)からポイントのクラスターを返すことです。

4

2 に答える 2

2

なぜその場で「クラスター化」しなければならないのかわかりません。満足のいく解像度で各ズームレベルで要約します。

X、Y、リンク数の単純な構造を持っています。誰かがリンクを追加したら、実際の場所(ズームレベルの最大値など)を挿入し、そこからバブリングを開始します。

最終的には、異なるズームレベルごとに1つずつ、10個の異なる座標セット(ズームレベルが10個ある場合)が作成されます。

計算は簡単で、一度だけ行う必要があります。

于 2009-09-28T15:37:08.263 に答える
1

私は現在、約2,000個のマーカーの動的なサーバー側クラスタリングを行っていますが、最大20,000個までかなり高速に実行されます。ここで私のアルゴリズムの議論を見ることができます:

マップクラスタリングアルゴリズム

ユーザーがマップを移動するたびに、ズームレベルとビューの境界を含むリクエストをサーバーに送信します。サーバーは、表示可能なマーカーをクラスター化し、クライアントに送り返します。

マーカーは動的にフィルタリングおよび検索できるため、クラスターをキャッシュしませんが、事前にクラスター化されていると、非常に高速になります。

于 2009-09-28T16:34:55.917 に答える