मैं वर्तमान में एक ऐसे प्रोजेक्ट पर काम कर रहा हूँ जहाँ मैं कई स्थानों के बीच दूरियों की गणना कर रहा हूँ। मैं निम्नलिखित क्वेरी का उपयोग object_id के चयन के लिए कर रहा हूं जो एक निश्चित दायरे में हैं।
SELECT id,
( 6371 *
ACOS(
COS( RADIANS( db_latitude ) ) *
COS( RADIANS( $user_latitude ) ) *
COS( RADIANS( $user_longitude ) -
RADIANS( db_longitude ) ) +
SIN( RADIANS( db_latitude ) ) *
SIN( RADIANS( $user_latitude) )
)
)
AS distance FROM the_table HAVING distance <= $the_radius ORDER BY distance ASC"
मैं स्वयं ACOS फॉर्मूला की व्याख्या नहीं कर सकता क्योंकि मुझे यह शोध से मिला है।
db_latitude = database latitude field
db_longitude = database longitude field
$user_latitude = browser latitude coördinate
$user_longitude = browser longitude coördinate
$the_radius = the radius that you want to search in
यह किलोमीटर में है।