Сайт ресторана с доставкой: как проверять адрес до оплаты

Гость собрал ужин, ввёл адрес, оплатил заказ и только после этого узнал, что ресторан туда не доставляет. Красивое меню и удобная корзина не исправляют этот маршрут. При заказе сайта с доставкой нужно заранее определить, как адрес превращается в решение о доступности услуги и на каком этапе это решение увидит покупатель.
Что ресторан должен решить до разработки
Список районов помогает описать покрытие словами, но оставляет спорные дома: улица может идти через несколько районов, а название посёлка — объединять удалённые части. Для автоматической проверки обычно требуется согласованная геометрия зон и способ получить координаты адреса. Само наличие карты в дизайне ещё не означает, что корзина использует её данные.
Разделите три результата: распознан адрес, найдена зона, подтверждены текущие условия заказа. Координаты могут указывать на центр улицы вместо нужного дома. Дом может находиться в зоне, но ресторан уже закончил приём заказов. Эти результаты нельзя заменять одной зелёной галочкой «адрес подходит».
- Определите фактическое покрытие каждой точки приготовления.
- Выберите способ уточнения дома и положения отметки на карте.
- Установите правила пересечений и границ зон.
- Свяжите выбранную зону с условиями заказа и доступностью точки.
- Согласуйте действие для адреса, который автоматически проверить не удалось.
Почему круг на карте не всегда подходит
Равное расстояние по прямой не гарантирует одинаковый путь курьера. Река, железная дорога и доступный переход могут сделать соседний дом неудобным для доставки. Поэтому форму зоны задают по реальному процессу ресторана. Время маршрута, дорожная обстановка и геометрическое попадание — отдельные проверки.
В инструменте ниже используются простые многоугольники в формате Polygon из GeoJSON. Стандарт задаёт порядок координат «долгота, широта» и замкнутые кольца. Учебная проверка принимает только один внешний контур без отверстий, в пределах небольшого участка. Полный GeoJSON, маршрутизация и поиск дома по тексту здесь не реализованы.
| Точка, долгота; широта | Геометрическая ситуация | Результат локальной проверки | Что требуется от рабочего сайта |
|---|---|---|---|
| 37.62; 55.75 | Внутри A, вне B | Одна подходящая зона | Проверить условия A и работу назначенной точки |
| 37.65; 55.75 | Внутри A и B | Пересечение зон | Применить явно согласованный выбор точки |
| 37.60; 55.74 | На внешней границе A | Граничный случай | Применить отдельное правило границы или уточнить адрес |
| 37.71; 55.75 | Вне обоих контуров | Зона не найдена | Предложить доступный вариант, например самовывоз |
Координаты и контуры в таблице вымышленные для проверки алгоритма. Они не описывают доставку конкретного ресторана. Даже первая строка не разрешает списать деньги: геометрия ничего не сообщает о минимальной сумме, графике, стоп-листе или возможности кухни принять заказ.
Как поступать с пересечением зон
Если один дом обслуживают две точки, нужен выбор. Это может быть заранее назначенный приоритет, доступность кухни или подтверждение оператором. Важно, чтобы правило было понятным и повторяемым. Порядок строк в случайно загруженном файле не должен незаметно определять ресторан, стоимость или срок.
Порядок действий в корзине
Попросить район можно до просмотра меню, если от него зависит доступный ассортимент. Точный дом стоит уточнить до перехода к оплате. После определения зоны сайт показывает применимые условия: минимальную сумму, стоимость доставки, доступное время и выбранную точку. Если адрес изменился, прежний результат больше не должен молча использоваться.
В рабочем проекте условия нужно проверить ещё раз на сервере перед созданием оплачиваемого заказа. Состояние кухни и правила зоны могут измениться, пока человек выбирает блюда. При расхождении нужно сообщить новый результат и дать согласовать условия, а не подменять сумму в конце без объяснения.
Что делать, когда сервис адресов не ответил
Отсутствие ответа не означает, что адрес находится вне покрытия. Нужен отдельный сценарий: повторить проверку, уточнить отметку или передать заявку на подтверждение доступным способом. Если автоматическое оформление временно недоступно, интерфейс должен это объяснять. Нельзя показывать произвольный адрес из подсказки как уже проверенный дом.
Как принять работу по зонам
Подготовьте примеры внутри каждой зоны, снаружи, на ребре, в вершине и в пересечении. Проверьте один адрес после смены точки, повторную проверку при изменении дома и поведение при недоступном внешнем сервисе. Отдельно согласуйте, кто редактирует контуры, когда изменения вступают в силу и где видна используемая версия правил.
Локальная проверка принимает до двадцати простых контуров. Она обнаруживает пересекающиеся рёбра внутри самого контура и отвергает такую геометрию; пересечение разных зон показывает через попадание выбранной точки. Она не строит полную карту взаимных пересечений и не исправляет контуры за ресторан.
На странице разработки сайта ресторана у Левицкий Концепт доставка выделена как отдельный сценарий. Для оценки проекта подготовьте меню, точки приготовления, зоны и правила обработки исключений. Так можно согласовать работающий путь заказа — от адреса до подтверждения, — а не ограничиться изображением карты рядом с кнопкой оплаты.
Проверить точку в учебных зонах доставки
Только координаты и простые полигоны без отверстий: 1–20 зон, 4–101 точка кольца с замыканием, до 6 десятичных знаков, широта −85…85, долгота −180…180. Контур не шире 2° по каждой оси, без перехода через 180°. На границе и при пересечении зон автоматического выбора нет. Не геокодирует адрес, не рассчитывает маршрут, время, оплату или фактическую доступность доставки. Расчёт выполняется на вашем устройстве, введённые данные никуда не отправляются.
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
