Платная парковка — скрытый расход, который съедает близкий заказ
Заказ рядом с домом кажется беспроигрышным, пока не выяснится, что весь визит вы простоите в платной зоне. Приложение заранее проверяет адрес и во время смены напоминает оплатить, чтобы близкий заказ не обернулся штрафом.
Близкий заказ выглядит как подарок: ехать пять минут, дорога почти ничего не стоит. А потом вы встаёте у подъезда в центре, проводите там час, и парковка съедает половину заработка. Или не оплачиваете её вовремя — и прилетает штраф, который перекрывает весь смысл поездки.
Платная парковка — самый незаметный расход выездной работы. Бензин вы хотя бы чувствуете, а вот тариф у чужого подъезда всплывает уже постфактум, когда деньги за заказ давно посчитаны в плюс. Визиторкрут вытаскивает этот расход на свет заранее.
Что делает
Приложение проверяет, попадает ли адрес заказа в платную парковочную зону. Проверка идёт по двум разным геометриям, потому что зоны в городе устроены не одинаково:
- Площадка — это полигон, замкнутый многоугольник (двор, сквер, отдельная стоянка). Приложение решает классическую задачу «точка внутри многоугольника»: попадает ли ваша точка внутрь контура.
- Улица — это линия вдоль проезжей части. Здесь вопрос другой: стоите ли вы вдоль обочины этой улицы, то есть достаточно ли близко ваша точка к оси дороги.
При оценке заказа приложение показывает саму зону и часы, когда за неё берут деньги — например, «будни 8:00–20:00». Но оно намеренно не пишет «сейчас платно»: заказ вы оцениваете заранее, а поедете, может, завтра утром или в выходной, когда парковка бесплатна. Показывать сиюминутный статус было бы враньём о будущем.
Что за этим стоит
Проверку «в зоне или нет» приложение делает на каждой точке GPS и на каждой оценке заказа — это очень горячий путь. Поэтому она устроена так, чтобы считаться быстро и без тяжёлых картографических движков.
Сначала грубо, потом точно
Первый шаг — грубый отбор по прямоугольнику вокруг зоны. Прямоугольник (bounding box) считается за пару сравнений чисел: если точка даже в него не попала, значит, точно не в зоне, и на неё не тратятся силы. И только те зоны, что прошли грубый фильтр, проверяются точной геометрией — «точка в многоугольнике» или «расстояние до оси улицы». Так тяжёлая математика запускается для единиц зон, а не для тысяч.
Радиус привязки к улице — 25 метров: это примерно ширина полосы (около 5 м) плюс честный запас на погрешность GPS, который в городе среди домов легко даёт десятки метров. Запас к прямоугольнику грубого отбора — 40 метров, чтобы точка у самого края зоны не проскочила мимо фильтра.
Напоминание во время смены
Отдельная история — не оценка, а реальная остановка. Если во время смены вы действительно встали в платной зоне и сейчас часы оплаты, приложение шлёт короткое напоминание «оплатите парковку». Чтобы это не превратилось в спам, напоминание срабатывает только при совпадении всех условий сразу:
- скорость ниже 5 км/ч — вы не едете, а стоите;
- стоите дольше 5 минут — не светофор и не короткая высадка;
- находитесь внутри платной зоны;
- сейчас часы оплаты — ночью парковка бесплатна, и приложение молчит.
И повтор про одну и ту же зону приходит не раньше чем через 60 минут. Один раз напомнили — дальше не дёргаем.
Напоминание приходит, когда вы реально стоите и реально идёт оплата, а не «на всякий случай» рядом с зоной.
Почему это важно
Платная парковка — это тот расход, который легче всего не заметить и который переворачивает арифметику именно у близких заказов. У дальнего заказа парковка теряется на фоне бензина; у ближнего она и есть главная статья, и она способна увести «выгодный близкий заказ» в минус.
А штраф за неоплату бьёт ещё сильнее — он в разы больше самого тарифа и легко перекрывает заработок за весь визит. Приложение решает обе беды: заранее показывает зону и часы, чтобы расход попал в расчёт выгодности до поездки, и во время смены вовремя напоминает оплатить, чтобы вы не подарили городу штраф из-за забывчивости.
Как устроена проверка парковки
- Две геометрии зоны: площадка — полигон (точка внутри многоугольника), улица — линия (близость к оси обочины).
- Двухступенчатый расчёт: грубый отбор по прямоугольнику (bounding box), затем точная геометрия — быстро и без тяжёлых карт-движков.
- Радиус привязки к оси улицы — 25 м (полоса ~5 м плюс запас на ошибку GPS); запас к прямоугольнику — 40 м.
- Напоминание в смене: скорость < 5 км/ч, стоите > 5 мин, внутри зоны, сейчас часы оплаты; повтор про ту же зону — не раньше 60 минут.
- Реализовано в parking_service.py, visit_parking.py (zone_at, address_hint), parking_tariff_service.py, repositories_parking.py, parking_alert_service.py.
Проверь любой заказ за секунду
Установи приложение и посмотри честный вердикт по своему следующему адресу — стоит ехать или нет.
Скачать для Android Android 8+ · установка из файла · бесплатно