2009-04-29 13 views
8

次の例では、マーカーはJSONから読み込まれます。Googleマップ - 何千ものマーカー - JSON

20,000個のマーカーがある場合、JSONはかなり大きくなるでしょう。

1つの巨大な配列を送信するのではなく、ズームレベルに応じて異なるJSONファイルを送信する方法はありますか?この問題を解決するための

http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/examples/weather_map.html

答えて

0

可能な方法:

  • zoomlevelに応じて、サーバーサイドでJSONを構築する(CON:ニーズはプロ、ズーム後にリロードします。データのほんのamoutsを行う必要があり一度だけデータロードする必要があり、詐欺:JavaScriptでデータを反復)
  • はマーカーがJSONデータでアクセス可能であるかについての情報を(プロインクルード)ロードしますJavaScriptで個の計算見えるマーカー(プロ:非常にダイナミックな、詐欺:計算負荷)
8

マップビューのための「境界矩形」の概念があります。 map apiはこれを2つの緯度/経度座標のペアとして提供します.1つはSWコーナー、もう1つはNEコーナーです。

JSONポイントを返すカスタムデータサービスがある場合は、これらの座標を入力として受け入れ、それに応じて返されたデータセット(おそらくSELECTステートメントのWHERE句)を調整する必要があります。

この境界矩形を記憶させるための詳細はありませんが、それはAPI docsが対象です。

1

はい、私は、各家が6,000の奇妙な世帯にわたってリサイクルされたボリュームを表示していた地方自治体のアプリケーションで同様のことをしました。データの総量(各家庭の住所と統計情報を含む)がかなり大きくなっているため、データファイル全体を一度に取り戻すと、ブラウザがハングアップしているように見えました。

代わりに、私たちが地図領域の外接矩形座標(緯度、経度)を送信したデータベースへのAJAX呼び出しでは、表示された点だけが返されました。アプリケーションの性質上、 'データを取得する'というユーザー主導のボタンはかなり受け入れられましたが、明らかにテーマで再生できるバリエーションはたくさんあります。サーバー側にバウンディング座標を渡すと、ズームレベルが高すぎる場合はサブセットのみを返します。地図描画イベントをキャッチして自動的にこれを実行できるはずです。

1

ズームが変わったら、新しいズームレベルをJSONサービスに送信し、そのレベルで表示されるはずのマーカーを返します。 addMarkers()を使用して結果をMarkerManagerに追加し、現在のズームレベルでのみ表示できるようにします。

他の回答では、現在のビュー内のマーカーのみが返されることが示唆されていますが、そのズームレベルですべてのマーカーを返すこともできます。それは、各レベルでどのマーカーを表示したいかをどれだけ知っているかによって異なります。

6

は、あなたのデータが大きすぎる場合でも

alt text http://gmaps-samples.googlecode.com/svn/trunk/images/screenshot_clusterereffect.jpg

を助けるMarketClusteredと呼ばれる新しいライブラリがありますが、私はマップを養う、すべてのデータ意志とそれをできるように良くなると思いますそれは事だ。

+7

MarkerClustererで約2,000点を超えるものは、私にとっては遅すぎます(Firefoxの場合 - ChromeとSafari 4は最大約8,000点です)。それはマーカーがどれくらい密であるかに依存しますが。 ズームが変わったときにチャンクを送信するのではなく、一度にすべてのデータをインポートするほうがよいでしょう。 –

+1

実際のデータがあります。コメントをアップアップしました。 –

関連する問題