У меня есть сценарий использования, когда пользователь передает свое местоположение (широту и долготу) бэкэнду, я должен получить это местоположение и одновременно найти все рестораны в радиусе Мили для своего местоположения.нужно также указать расстояние до каждого ресторана от его местоположения.
Мой столик в ресторане.
res_name | lat | lng
--------------------------------------------------------------
McDonalds' | 6.8705452 | 79.884038
KFC | 6.8705452 | 79.884038
Burger king | 6.8686279 | 79.8873961
--------------------------------------------------------------
Чтобы найти записи, которые совпадают с радиусом в милях для предоставленных пользователем координатЯ могу использовать этот запрос
SELECT
id, (
3959 * acos (
cos ( radians(78.3232) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(65.3234) )
+ sin ( radians(78.3232) )
* sin( radians( lat ) )
)
) AS distance
FROM markers
HAVING distance < 30
ORDER BY distance
LIMIT 0 , 20;
это также я получил от вопроса stackoverflow, и он работает.Теперь моя проблема заключается в том, как определить расстояние между местоположением пользователя и местоположением ресторана для каждого соответствующего результата?
Надеюсь, мой запрос вам понятен.
Пользователь передаст свое текущее местоположение.Исходя из этого местоположения, мне нужно отфильтровать рестораны в радиусе 30 миль.В то же время я должен сказать расстояние до ресторана от его текущего местоположения.
Мой ожидаемый результат будет таким.У вас есть два ресторана в районе 30 миль.для KFC у вас есть расстояние 12 миль.для McDonalds 'у вас есть расстояние 29 миль.
Как мне изменить этот запрос, чтобы выполнить мое требование?