2017-08-24 8 views
0

私はアプリケーションの開発を開始しようとしていますが、最も効率的な方法で作業を進めています。だから誰もこのアプリにアクセスして、ここでちょっと言ってよ!地図にある。それらの地理的位置(長距離、緯度)は、一種のマーカーとして使用されます。今10マイル以内の地理的位置を特定

ユーザー・アクセスのこのアプリは、どのようにそれは人々が10マイル半径発言の中にあったとマーカーを表示していました。確かに私はすべての単一のマーカーをスクロールするためにforループを使用することができますが、スケールの方がはるかに大きく、それが最も効率的な方法でしょうか? 50,000のマーカーがあればどうなるでしょうか?

私は各マーカーに国を追加すると考えていますので、あなたがいる国のマーカーをスクロールするだけですが、それでも各マーカーをスクロールして、同じ国にいるかどうかを確認してください私は間違っているように見えるすべての単一の国のためのデータベースを作成しない限り、場所。

あなたは、実際のコードのためにあなたが(MySQLを使用して例えば)longlatのための標準的なフロートインデックスを持つデータベースを持っている場合は、既存のアプリケーションはすでに、何かアドバイス:)

答えて

0

ためのおかげで、これを行う方法については、単にロジックを見ていません特定の経度および緯度間隔内にあるすべての点を選択できます。このため、最初に計算する必要があります。Delta_LongitudeDelta_Latitudeは10マイルに対応しています(DeltaLongitudeは緯度に依存します)。結果セットは、正方形上のすべての点で構成されています(正方形は球上にあるため、実際には正方形ではありません)。

このクエリでは、選択肢が大きな要因で絞り込まれました。今度は、ポイントごとにdistance on a sphereを計算し、マーカーを再びフィルタリングすることが可能です。


MongoDBフィーチャーgeospatial indixesあなたが求めていたことをexventalyします。

+0

ああ、私はまっすぐSQLからそれをやって考えたことはありません完璧なthatsの。あなたはまた、境界例に対処する必要があるため設立され、フレームワークに依存私は緯度と長いこのデル​​タを動作するようにGoogle MapsのAPIか何かを使用することができますことを確認イム、おかげでたくさん:) –

+0

は、角度を計算するために、おそらく良いアイデアです: ' 359°+ 2°= 1° ' – sauerburger

関連する問題