2015-04-26 3 views
-1

У меня есть база данных ресторанов с их точным адресом, и теперь, когда пользователь ищет ресторан со своего мобильного устройства, я хочу показать ему ресторан в порядке расстояния от его текущего местоположения, чтобы ресторан, который в итоге результат очень близок. Каков наилучший способ сделать это?поиск ресторана на основе текущей геолокации

+0

Ознакомьтесь с [Местами поиска по поиску] (https://developers.google.com/maps/documentation/javascript/places#place_search_requests), существует опция 'google.maps.places.RankBy.DISTANCE', которая будет делать то, что вы хотите. – MrUpsidown

+0

Я хочу найти ближайший из тех ресторанов, чье геоположение (широта и долгота), которые я сохранил в своей собственной БД. От пользователя я получу его геолокацию, которую я могу получить с помощью HTML5. – hitesh

+1

Хорошо. Какую базу данных вы используете? Все это информация, которую вы должны задать в своем вопросе на первом месте. Вы получите более быстрый ответ, если ваш вопрос будет ясным и полным. – MrUpsidown

ответ

0

Вы можете использовать то, что называется Haversine formula.

Ниже приведен пример для PHP/MySQL, но запрос по-прежнему нужен.

$sql = "SELECT *, (3959 * acos(cos(radians(" . $lat . ")) * cos(radians(lat)) * cos(radians(lng) - radians(" . $lng . ")) + sin(radians(" . $lat . ")) * sin(radians(lat)))) AS distance FROM your_table HAVING distance < 5"; 

Где $lat и $lng координаты вашей точки, и широта/LNG ваши столбцы таблицы. Вышеуказанное будет содержать список местоположений в диапазоне 5 нм. Заменить 3959 на 6371, чтобы перейти в километры.

Эта ссылка может быть полезна: https://developers.google.com/maps/articles/phpsqlsearch_v3

Вы можете добавить предложение order by заказать результаты по distance.

Смежные вопросы