मैं जिस स्टोर लोकेटर के साथ काम करता हूं उस पर मैं क्वेरी का उपयोग करता हूं:
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
डेटाबेस में संग्रहीत बिंदु हैं।
:दूरी को मीलों में मापा जाता है, कोड के कार्यशील संस्करण में:दूरी वास्तव में 10-50 मील की दूरी से एक ड्रॉप डाउन से खींची जाती है
किलोमीटर के साथ काम करने के लिए कोड को बदलना 3959 (मील में पृथ्वी के केंद्र से इसकी सतह तक की दूरी) को 6371 (3959 मील को किलोमीटर में परिवर्तित) करके पूरा किया जा सकता है, उस समाधान के लिए जोशेंडो का धन्यवाद।