Вывод товаров на сайте с сортировкой по удаленности от адреса покупателя?
Всем привет.
Появилась необходимость вывести товары на сайте отсортировав их по удаленности от адреса покупателя.
Я получаю адрес доставки покупателя из БД (Благовещенск, улица Ленина, дом 1), теперь мне нужно вывести товары (у которых также есть адрес склада) сортируя их по удаленности от адреса покупателя.
Пример:
адрес покупателя - улица Ленина 1, тогда товары должны выводиться в порядке:
1) товар (с адресом улица Ленина 2)
2) товар (с адресом улица Ленина 10)
3) товар (с адресом улица Ленина 24)
4) товар (с адресом улица Кирова 140/2 к 1)
5) товар (с адресом улица Комсомольская 12А)
.....
Вообще реально ли такое реализовать? Если да, то помогите советом, пожалуйста.
На сайте подключен Яндекс API карты.
Реально.
1. Создаёте переменную, в которой будете хранить адрес покупателя товара (let buyerAddress)
2. Создаёте переменную, в которой будете хранить результат по дистанции (let distance)
3. Создаёте массив объектов (let goodDistance)
4. Прогоняете циклом адреса покупателей через API, получаете дистанции. которые добавляете в объект. Получаете на выходе:
// в каждом distance будет храниться новое значение, которое вы получаете через API
// в каждом buyerAddress будет храниться адрес покупателя
goodDistance = [
{good: "товар1", buyer: buyerAddress, range: distance},
{good: "товар2", buyer: buyerAddress, range: distance}
//... и тд
]
1) товар (с адресом улица Ленина 2)
2) товар (с адресом улица Ленина 10)
3) товар (с адресом улица Ленина 24)
А что делать если нечетная сторона сильно не совпадает с четной ? А дом по паралельной улице, который ближе ?
Вариант с гео дистанцией работает лучше если в городе нет разрывов связности. В случае реки через город можно добавить штрафную функцию если точки на разных берегах.
?
Типа адрес клиента Ленина 10, а адрес склада Ленина 13 ? Тут нет задачи строгой четности, главное сделать такую сортировку +- чтобы работала, а погрешности есть везде. Когда-нибудь посещали сайт с авто определением геолокации? Вы на находитесь в Москве, а скрипт Вам говорит - "Ваш город Ростов-на-Дону, угадали?"