1

ある時点で約 14000 個のマーカーを描画するマップがあります。マップの境界が、マーカーが描画される領域全体に設定されている場合、マーカーの描画に長い時間がかかります (約 8 秒)。しかし、マーカーがほとんどまたはまったく描画されない領域にズームすると、14000 個のマーカーの描画が 2 ~ 3 秒と非常に速くなります。

これは、実際にマーカー アイコンをタイルに描画するプロセスが最も時間がかかるためであり、マーカーは一度に 1 つずつ追加されるため、マップは非常に短い時間で何度もレンダリングされるためだと思います。

したがって、アイコンを追加している間はマップの更新/レンダリングを無効にし、すべてのアイコンが追加されたら再度有効にすることは可能でしょうか。

同様の効果を持つソリューションは大歓迎です

4

3 に答える 3

2

ズームインすると api v3 が 14 000 を追加しないため、レンダリング時間が短縮されます。現在の境界にあるマーカーと、エッジの周りのタイル レイヤー バッファーにあるマーカー (おそらく 1 つまたは 2 つのタイル) のみを追加します。

私はあなたが何を意味するのか少し混乱していますが、マップが既にロードされた後にのみマーカーを追加したいかもしれません:

google.maps.event.addListenerOnce(map,'tilesloaded',addMarkersFunction);

そうは言っても、14 000 マーカーは大量のマーカーです。これほど多くのマーカーがある場合、マーカーをクラスタリングすることは、もはやオプションとは見なされません。

于 2012-06-11T11:25:02.940 に答える
1

はい、マップに関連付けるのではなく、多くのマーカーを作成できます。その後、それぞれでsetMap()関数を呼び出します。

また、現在の範囲内にある場合にのみこれを行うことができます。

また、マーカーの数を減らすためにマーカーのクラスタリングを検討しましたか?

コードを確認すると便利です。

于 2012-06-11T11:18:49.887 に答える
0

Google Maps API v3 Utility LibraryのMarkerManagerライブラリを使用してみてください。このような問題のために設計されました。ドキュメンテーションはそれほど多くありませんが、ソース コードにはいくつかの有用な例と多くのコメントがあります。

于 2012-06-11T13:25:10.257 に答える