users
列latitude
と、で名前が付けられたデータベースがあり、によって提供される特定の緯度と経度から半径50 km以内にあるlongitude
最も近いユーザー(テーブル内のユーザー)を調べたいと思います。users
$_POST
どうすればそれができるか教えていただけますか?使用する必要のある特定の数学関数、またはMySQLのような関数などはありますlatitude_compare()
か?
users
列latitude
と、で名前が付けられたデータベースがあり、によって提供される特定の緯度と経度から半径50 km以内にあるlongitude
最も近いユーザー(テーブル内のユーザー)を調べたいと思います。users
$_POST
どうすればそれができるか教えていただけますか?使用する必要のある特定の数学関数、またはMySQLのような関数などはありますlatitude_compare()
か?
次のようなことができます。
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
これは私が使用しているコードです。これはマイル単位です。指定された半径内のすべての緯度と経度を選択します。
$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";