ユーザーがGoogleマップを移動すると、自動的にユーザーの閲覧範囲にアイテムが表示されるようにしたいと考えています。アイテムを効率的かつ迅速に表示するにはどうすればよいですか?
ユーザーがマップを移動するたびに getBounds() メソッドを呼び出すことについては基本的な理解がありますが、現在のビューポートの境界の緯度/経度内の項目をデータベースから効率的に検索して取得する方法がわかりません。これを行うためのより簡単で高速な方法はありますか?
ユーザーがGoogleマップを移動すると、自動的にユーザーの閲覧範囲にアイテムが表示されるようにしたいと考えています。アイテムを効率的かつ迅速に表示するにはどうすればよいですか?
ユーザーがマップを移動するたびに getBounds() メソッドを呼び出すことについては基本的な理解がありますが、現在のビューポートの境界の緯度/経度内の項目をデータベースから効率的に検索して取得する方法がわかりません。これを行うためのより簡単で高速な方法はありますか?
Geek's answerに加えて、代わりにGeohashにインデックスを作成することを検討することもできます。空間インデックス機能を備えたデータベースを使用することもできます。MySQL、PostgreSQLおよびSQL Server 2008にはすべて、空間インデックス作成を含む地理空間機能 (ネイティブまたは拡張機能による) があります。
私は同じ問題を抱えていました。私が問題を軽減しようとした方法はこれです。
SELECT * FROM table WHERE long > $long_left AND long < $long_right AND lat > $lat_bottom AND lat < $lat_top
MarkerManager
特定のズームレベルでのみ表示するようにマーカーを設定できるため、多数のマーカーが予想される場合は、マーカーの処理にも使用することをお勧めします。
long/lat を 10 進数として保存すると、データベースは値を比較する前に値を変換する代わりに、値を正しく比較できます。
インデックスはデータベースの鍵です (しゃれ:-)) それらを正しく使用しますが、過度に使用しないでください