Mysql в пределах расстояния запрос

Параметры

$lat = '25.7742658';
$lng = '-80.1936589';
$miles = 30;

Запрос

SELECT *, 
   ( 3959 * acos( cos( radians($lat) ) 
   * cos( radians( lat ) ) 
   * cos( radians( lng ) - radians($lng) ) 
   + sin( radians($lat) ) 
   * sin( radians( lat ) ) ) ) AS distance 
FROM locations 
HAVING distance < $miles 
ORDER BY distance 
LIMIT 0, 20

У меня есть таблица базы данных с 4 столбцами:

  • уникальный идентификатор
  • название города
  • широта (широта)
  • долгота (lng)

Я использую запрос сверху, чтобы вернуть местоположения, которые находятся в пределах указанного количества миль от указанных координат. Кажется, он работает, но я не уверен, насколько он точен. Мне любопытно узнать, хорош ли запрос или у вас есть лучшее решение.

5
задан CyberJunkie 4 July 2011 в 17:54
поделиться