Доставка до любой точки в России

В проекте использовали
Клиент пришел с проблемой
Магазин нашего клиента доставляет заказы по всей России. Модуль расчета стоимости определяет цену доставки. Но в него встроен не полный список населённых пунктов страны. Например, для Республики Башкортостан сохранен только город Уфа. Поэтому до других городов и сёл Республики рассчитать стоимость доставки невозможно, так как их нет в базе.
При этом в список встроены все области и рассчитать доставку можно было бы до них. Но в заказе возможно выбрать только город. Получается, заказы магазин доставляет по всей стране, но не все покупатели могут заказать доставку, потому что многих населенных пунктов нет в базе.
В целом, задача оказалась проще, чем мы думали вначале. Переломным моментом стала идея отказа от стандартной формы с полями адреса в пользу выбора его на карте. А дальше дело техники.
Всегда есть особенности
Очевидное решение этой проблемы — загрузить данные по населенным пунктам из ФИАС (или КЛАДР). Но дело в том, что оно притянет за собой две дополнительные проблемы. Во-первых, вопрос актуализации данных ляжет на плечи проекта. Необходимо будет постоянно обновлять местоположения и перенастраивать службы доставки.
Как мы это сделали
ХПрописали в админке стоимость доставки по областям в целом и отказались от привычных полей ввода для получения адреса клиентов: Город, Улица, Дом. Вместо этого мы предоставили клиентам возможность указать свой адрес точкой на карте. После того как на карте будет указана точка, мы получим от Яндекса данные по данному адресу (к какому городу или области он относится).
Далее мы проверим задана ли стоимость для конкретного населенного пункта. Если она не задана, то определим стоимость доставки до области или Республики в целом. Для отдела логистики почти все настройки остаются прежними. Единственное, что нужно настроить — это дополнительные службы доставки для субъектов и страны.
Для облегчения поиска нужного дома мы центрируем карту на город, который определяем по геолокации клиента. Кроме того, Яндекс.Карты позволяют определять местоположение клиента по мобильной сети и предоставляют поиск по адресу.