1

この Virtual Earth javascript API を使用して、独自のクラスタリング アルゴリズムを実装したいと考えています: http://msdn.microsoft.com/en-us/library/cc966716.aspx ただし、VE エンジンは、レイヤー内の形状ごとにクラスター関数を 1 回呼び出します。 . これにより、非常に遅くなります!VE はすべての形状をレイヤーに配置し、関数にそれらをクラスター化するように要求する必要があるように思えます。クラスターを繰り返し呼び出さないでください。

なぜ VE エンジンはこれを行うのですか? この API を使用してクライアント側のクラスタリングを行う別の方法はありますか?

詳細情報: GeoRSS フィードから形状を読み込んでいます。

4

2 に答える 2

1

VEShapeLayer ごとに 1 回だけコードを呼び出す必要があります。そうしないと、単一の形状をクラスター化できないため、クラスター化は無意味になります。VEShape オブジェクトを VEShapeLayer に追加する代わりに、VEMap.AddShape を使用していますか? その場合は、VEShapeLayer を 1 つ作成して VEMap に追加し、すべての VEShape オブジェクトをマップではなくシェイプ レイヤーに追加してみてください。

于 2008-11-02T21:18:47.430 に答える
1

カスタム クラスタリング アルゴリズム メソッドは、その VEShapeLayer に対して 1 回だけ呼び出されます。

Adam Byram 氏、VEMap.AddShape メソッドを使用することと、すべてのシェイプを内部に含むマップに VEShapeLayer を追加することの間に大きな違いはありません。AddShape メソッドは、0 (ゼロ) インデックスを持つ ShapeLayer である「デフォルト」ShapeLayer にシェイプを追加し、VEShapeLayer を追加すると、既存の「デフォルト」レイヤに加えて新しいレイヤが追加されます。

VEMap.AddShape を使用して VEShape オブジェクトをマップに追加している場合、VEShape がマップに追加されるたびにクラスタリング アルゴリズム メソッドが呼び出されている可能性があります。形状が追加されるたびにクラスタリングを再計算する必要があるため、これは正しい動作です。

すべての形状をマップに追加するときの全体的なパフォーマンスを改善し、すべての形状を追加するときに VE がカスタム アルゴリズム メソッドを 1 回だけ呼び出すようにする。VEShapeLayer を作成し、それにすべてのシェイプを追加してから、そのシェイプ レイヤーをマップに追加できます。これにより、VE は、単一の VEShape を追加するたびにではなく、すべてのシェイプのレンダリングを (すべてのロード時に) 1 回だけ実行します。

于 2008-11-07T22:19:29.473 に答える