使用している店舗検索で使用するクエリは次のとおりです。
SELECT
`id`,
(
6371 *
acos(
cos( radians( :lat ) ) *
cos( radians( `lat` ) ) *
cos(
radians( `long` ) - radians( :long )
) +
sin(radians(:lat)) *
sin(radians(`lat`))
)
) `distance`
FROM
`location`
HAVING
`distance` < :distance
ORDER BY
`distance`
LIMIT
25
:lat
および:long
lat
でユーザーが通過したポイントです およびlong
データベースに保存されているポイントです。
:distanceはマイルで測定されます。コードの作業バージョンでは、:distanceは実際には10〜50マイルの範囲のドロップダウンから取得されます
キロメートルで動作するようにコードを変更するには、そのソリューションのjoshhendoのおかげで、3959(地球の中心から地表までの距離(マイル))を6371(3959マイルをキロメートルに変換)に変更することができます。