3

ユーザーがGoogleマップを移動すると、自動的にユーザーの閲覧範囲にアイテムが表示されるようにしたいと考えています。アイテムを効率的かつ迅速に表示するにはどうすればよいですか?

ユーザーがマップを移動するたびに getBounds() メソッドを呼び出すことについては基本的な理解がありますが、現在のビューポートの境界の緯度/経度内の項目をデータベースから効率的に検索して取得する方法がわかりません。これを行うためのより簡単で高速な方法はありますか?

4

2 に答える 2

1

Geek's answerに加えて、代わりにGeohashにインデックスを作成することを検討することもできます。空間インデックス機能を備えたデータベースを使用することもできます。MySQLPostgreSQLおよびSQL Server 2008にはすべて、空間インデックス作成を含む地理空間機能 (ネイティブまたは拡張機能による) があります。

于 2010-05-30T00:31:31.047 に答える
1

私は同じ問題を抱えていました。私が問題を軽減しようとした方法はこれです。

  • 経度/緯度を小数としてデータベースに保存します
  • long 列と lat 列にインデックスを配置する
  • 次のようなクエリを使用しますSELECT * FROM table WHERE long > $long_left AND long < $long_right AND lat > $lat_bottom AND lat < $lat_top

MarkerManager特定のズームレベルでのみ表示するようにマーカーを設定できるため、多数のマーカーが予想される場合は、マーカーの処理にも使用することをお勧めします。

long/lat を 10 進数として保存すると、データベースは値を比較する前に値を変換する代わりに、値を正しく比較できます。

インデックスはデータベースの鍵です (しゃれ:-)) それらを正しく使用しますが、過度に使用しないでください

于 2010-05-29T23:09:55.863 に答える