fillGaps used the public BRouter shortest only, so a dropout where you rode a trail/track absent from OSM was left unbridged (detour >2x or noroute), even though your own track went straight through. Add opts.routeFn: the detail view now tries rideRoute (the ride-graph over your tracks) first and falls back to public BRouter only where you've never ridden. A ridden bridge is trusted as-is (no detour-too-long rejection); public routing keeps that guard. Clearer 'not bridged' message split by reason (public detour vs no road data).
3 KiB
Сессия 2026-09-30 - достройка пропусков предпочитает проеханные дороги
Проблема (замечание пользователя)
Достройка отказывалась мостить разрыв там, где реально проезжал (есть два проезда), с
сообщением "больше нужного"/"нет данных". Причина: GPS.fillGaps звал только публичный BRouter
"shortest" по OSM и ничего не знал о собственных треках пользователя. В проекте уже есть router
по проеханным дорогам (rideRoute, get_ride_graph), которым пользуется редактор маршрутов, но
достройка к нему не была подключена. Отсюда: где ехал по тропе/грунту (нет в OSM) - публичный
BRouter либо в объезд > 2x, либо noroute.
Фикс
GPS.fillGaps(points, opts)(gps.js): добавленopts.routeFn(a,b) -> {points, ridden}; дефолт - публичный BRouter. Дляridden:true(путь по проеханным дорогам) НЕ применяется гвард "объезд2x" - проеханный путь это факт, а не крюк (
rideRouteи так ограничивает себя 2.5x). Каждому разрыву вgaps[]пишетсяridden.- Место вызова (main.js, деталь трека):
routeFn=rideRouteсначала, публичный BRouter fallback. Так: есть моя дорога -> по ней; нет -> публичное; фэйл (в объезд / нет данных) остаётся, но с понятным сообщением. - Сообщение (drawGapPatches + панель): скипы считаются раздельно (skipped-long / skipped-noroute) и словами: "Не достроено: N (нет твоей проеханной дороги; K — публичный маршрут уводит в объезд, L — нет дорожных данных)."
Оговорка
Если участок проезжен ТОЛЬКО в этой поездке (где сам разрыв - точек нет), в ride-графе его нет, идёт fallback на публичный BRouter (как раньше). Ожидаемо: не ехал по другим - нельзя достроить.
Проверка
Синтаксис ок. Собрать + телефон: на воскресном 60-км нажать 🧩, убедиться, что разрывы по проеханным дорогам теперь достраиваются (голубым по реальной дороге), а сообщение по недостроенным
- понятное. Отдельно: где не ехал - остаётся честный отказ.