У меня есть вариант использования, когда пользователь передает свое местоположение (широту и долготу) в серверную часть, я должен получить это местоположение и найти все рестораны с зоной радиуса в Милях для его местоположения, в то же время я должен дать расстояние до каждого ресторана от его местоположения.
Мой столик в ресторане.
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;
это также я получил из вопроса о переполнении стека, и он работает. Теперь моя проблема в том, как мне получить расстояние между местоположением пользователя и рестораном для каждого совпадающего результата?
Надеюсь, мои поиски вам понятны.
Пользователь передаст свое текущее местоположение. На основе этого местоположения мне нужно отфильтровать рестораны в радиусе 30 миль. В то же время я должен указать расстояние до ресторана от его текущего местоположения.
Мои ожидаемые результаты будут такими. У вас есть два ресторана в районе 30 миль. для KFC у вас есть расстояние 12 миль. для McDonalds - 29 миль.
Как мне изменить этот запрос, чтобы удовлетворить мои требования?