2012-12-19 14 views
7

PhonegapとJQueryを使用してモバイルアプリを作成しています。データベースから同様の経度と緯度を取得する

アプリは、ユーザーの経度と緯度を収集し、データベースに保存します(PHPスクリプト - ウェブサービスを使用)。アルゴリズムによっては、トラフィックがあるかどうかを検出します。私が必要とするのは、同じ通り/ 200mの範囲内で互いに近くにあるデータベースからすべての経度と緯度の値を取得することです。

5人の緯度/緯度が互いに近く(同じ街路Aにある)、3つの緯度/経度が近くにあるリストをデータベースに持ち、いくつかの他のユーザーを代表する他の通りでランダムに。私はどのように私はお互いの近くにあるlon/lat値を検出できるか教えていただけますか?私は値をMySQLデータベースに別々の値として保存しています。つまり、経度のフィールドと緯度のフィールドです。

近くにあるlon/latを取得すると、ストリートAのユーザーとストリートBのユーザーの間の中心点を交通渋滞としてマークする必要があります(他の検出に基づいて)。

+0

アプリケーションの規模に応じて、オプションの場合は、代わりにPostGISの使用を検討することをお勧めします。 MySQLよりもはるかに優れたSPATIALサポートを備えています。 PostGISでこれを行うのは非常に簡単ですhttp://gis.stackexchange.com/q/27878/3591 –

+0

こんにちはマーク、アプリケーションの規模はかなり基本的です。私たちはPostGISを検討していましたが、より安価なホスティングが見つかったのでMySQLに頼っていました...そうでなければ、PostGISはより良い空間機能を持っています:/ – user1809790

答えて

5

Haversine式を調べる必要があります。以下を参照してください:

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance; 

これは、入力されたlong/latペアから25マイル以内にあるすべてのレコードを返します。

+0

HAVING distance <25 ここに距離キーワードがあります。並べ替えの機能や何か? – user1809790

+0

別名 '距離'を確認してください。 –

+0

@ m4k 私は上記のスニペットが私にストリートAとストリートBの両方の長い/緯度を与えてくれると思いますか?私がしなければならないことは、お互いに近いポイントを得て(上のように)、ストリートAまたはBのすべてのポイントを得て、その中間点を見つけることです。 – user1809790

関連する問題