Параметры
$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 столбцами:
Я использую запрос сверху, чтобы вернуть местоположения, которые находятся в пределах указанного количества миль от указанных координат. Кажется, он работает, но я не уверен, насколько он точен. Мне любопытно узнать, хорош ли запрос или у вас есть лучшее решение.