5

userslatitudeと、で名前が付けられたデータベースがあり、によって提供される特定の緯度と経度から半径50 km以内にあるlongitude最も近いユーザー(テーブル内のユーザー)を調べたいと思います。users$_POST

どうすればそれができるか教えていただけますか?使用する必要のある特定の数学関数、またはMySQLのような関数などはありますlatitude_compare()か?

4

2 に答える 2

2

次のようなことができます。

SELECT *,

(ACOS((SIN(RADIANS(ref_latitude))*SIN(RADIANS(latitude))) + 
(COS(RADIANS(ref_latitude))*COS(RADIANS( latitude ))*COS(RADIANS( longitude)
-RADIANS(ref_longitude)))) * 6371) AS distance

FROM table
ORDER BY distance ASC

ポイント A: ref_latitude ref_longitude

ポイント B: 緯度経度

私の緯度/経度の値は、次のように度単位です。

ドレスデン: 13.721067614881400 / 51.060033646337900

于 2013-04-17T14:54:21.257 に答える
1

これは私が使用しているコードです。これはマイル単位です。指定された半径内のすべての緯度と経度を選択します。

$q = "SELECT * ( 3959 * acos( cos( radians($current_lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($current_lng) ) + sin( radians($current_lat) ) * sin( radians( lat )))) AS distance FROM users HAVING distance < $radius";
于 2013-05-15T07:09:37.683 に答える