Berikut adalah kueri yang saya gunakan di pencari lokasi toko tempat saya bekerja:
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
dan :long
adalah titik yang dilewati oleh pengguna di mana lat
dan long
adalah poin yang disimpan dalam database.
:distance diukur dalam mil, dalam versi kode yang berfungsi :distance sebenarnya ditarik dari drop down mulai dari 10-50 mil
Mengubah kode untuk bekerja dengan kilometer dapat dilakukan dengan mengubah 3959 (jarak dari pusat bumi ke permukaannya dalam mil) menjadi 6371 (3959 mil dikonversi ke kilometer) berkat joshendo untuk solusi itu.