blackseabreathe
@blackseabreathe
brackets

Вывод товаров на сайте с сортировкой по удаленности от адреса покупателя?

Всем привет.

Появилась необходимость вывести товары на сайте отсортировав их по удаленности от адреса покупателя.

Я получаю адрес доставки покупателя из БД (Благовещенск, улица Ленина, дом 1), теперь мне нужно вывести товары (у которых также есть адрес склада) сортируя их по удаленности от адреса покупателя.

Пример:

адрес покупателя - улица Ленина 1, тогда товары должны выводиться в порядке:
1) товар (с адресом улица Ленина 2)
2) товар (с адресом улица Ленина 10)
3) товар (с адресом улица Ленина 24)
4) товар (с адресом улица Кирова 140/2 к 1)
5) товар (с адресом улица Комсомольская 12А)
.....

Вообще реально ли такое реализовать? Если да, то помогите советом, пожалуйста.
На сайте подключен Яндекс API карты.
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 3
Immortal_pony
@Immortal_pony Куратор тега PHP
Вариант 1:
Считаем данные с помощью Distance Matrix, тупо скармливая ему два адреса: https://yandex.com/dev/routing/distance_matrix/

Вариант 2:
1. Вбиваем в систему помимо адреса склада, его широту и долготу
2. Узнаём широту и долготу пользователя при вводе адреса (yandex autocomplete это умеет, хотя для подсказок адреса в РФ я бы выбрал Dadata, потому что он намного лучше распознаёт пользовательский ввод. Ну а широту с долготой и там и там получить можно)
3. Считаем расстояние, зная широту и долготу двух объектов

Первый вариант проще, но возможно будет дороже, особенно если у тебя реально много заказов.
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Вариант 3:
Построить изохроны для складов. Потом остаётся найти самую "быструю" зону - вот и наш ближний склад.
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
хранишь широту/долготу городов, сортируешь по расстоянию между городом склада и городом клиента
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы