diff --git a/apk-webview/app/src/main/assets/index.html b/apk-webview/app/src/main/assets/index.html index e53d201..8571955 100644 --- a/apk-webview/app/src/main/assets/index.html +++ b/apk-webview/app/src/main/assets/index.html @@ -65,7 +65,7 @@ color:var(--txt);border-radius:10px;width:38px;height:38px; font-size:22px;line-height:1;font-family:inherit;cursor:pointer; align-items:center;justify-content:center;padding:0} - body.app .iconbtn,body.about .iconbtn{display:inline-flex} + body.app .iconbtn,body.about .iconbtn,body.map .iconbtn{display:inline-flex} /* на главном экране стрелки нет, но место под неё оставляем, иначе съедет центр */ body.app .iconbtn.back{visibility:hidden} /* троеточие в круглой кнопке приподнято: рамка остаётся на одной линии с названием */ @@ -95,9 +95,12 @@ .aboutcard p.muted{color:var(--muted);font-size:13px} /* экран «Карта»: страница целиком занята картой, шапка остаётся */ - body.map{padding:24px 16px 16px;overflow:hidden} - body.map .wrap{height:100vh;height:100dvh;display:flex;flex-direction:column;max-width:none} + body.map{height:100vh;height:100dvh;min-height:0;padding:24px 16px 16px;overflow:hidden} + body.map .wrap{height:100%;display:flex;flex-direction:column;max-width:none} body.map header{margin-bottom:12px} + /* заголовок всегда в одну строку, в том числе на карте */ + body.map h1{font-size:20px;line-height:1.2;white-space:nowrap} + body.map .clock{font-size:18px;margin-top:6px} body.map .day,body.map .pickers,body.map .where,body.map .dir, body.map .fullbtn,body.map #fullTable,body.map .aboutcard,body.map footer{display:none} body.map #mapBox{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:8px} @@ -106,8 +109,23 @@ .mapcanvas.loading::after{content:"Загружаю карту…";position:absolute;inset:0; display:flex;align-items:center;justify-content:center; color:var(--muted);font-size:14px} - .mapstatus{flex:0 0 auto;background:var(--card);border:1px solid var(--line); - border-radius:14px;padding:11px 14px} + + /* нижняя шторка: свёрнута до ручки с заголовком, тянется вверх, + а текст внутри прокручивается отдельно от карты */ + .mapsheet{flex:0 0 auto;position:relative;display:flex;flex-direction:column; + background:var(--card);border:1px solid var(--line);border-radius:14px; + overflow:hidden;box-shadow:0 -6px 20px rgba(0,0,0,.35)} + .grab{position:relative;flex:0 0 auto;display:flex;align-items:center;gap:8px; + padding:14px 14px 8px;cursor:grab;touch-action:none;user-select:none; + border-bottom:1px solid var(--line)} + .grab .bar{position:absolute;top:6px;left:50%;width:34px;height:4px;margin-left:-17px; + border-radius:2px;background:#3a4a70} + .grab .cap{flex:1 1 auto;min-width:0;font-size:12px;font-weight:700;color:var(--muted); + overflow:hidden;text-overflow:ellipsis;white-space:nowrap} + .grab .chev{color:var(--muted);font-size:11px;transition:transform .2s} + .mapsheet.open .grab .chev{transform:rotate(180deg)} + .mapstatus{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch; + overscroll-behavior:contain;padding:11px 14px 14px} .mapstatus .head{font-size:14px;font-weight:700;margin-bottom:4px} .mapstatus .head b{color:var(--accent)} .mapstatus .rows{font-size:13px;color:var(--muted);line-height:1.55} @@ -115,6 +133,11 @@ .mapstatus .rows .when{color:var(--txt);font-variant-numeric:tabular-nums; white-space:nowrap;font-size:12px} .mapstatus .hint{margin-top:7px;font-size:11px;color:var(--muted);line-height:1.4} + .note{margin-top:10px;padding-top:10px;border-top:1px solid var(--line); + font-size:12px;line-height:1.55;color:var(--muted)} + .note p{margin:0 0 8px} + .note p:last-child{margin-bottom:0} + .note b{color:var(--txt)} /* метки на карте. Корень двигает библиотека, вид задаёт внутренний блок */ .pin{transform:translate(-50%,-100%);white-space:nowrap;pointer-events:none} @@ -197,20 +220,44 @@
Кандалакшаотпр.
-
Полярные Зори→ Зашеек
-
Зашеекприбытие
-
Полярные Зори→ Кандалакша
+
Полярные Зориотпр. в Зашеек
+
Зашеекотпр.
+
Полярные Зориотпр. в Канд.
@@ -224,36 +271,47 @@

В меню есть «Карта»: там видно, где сейчас едут автобусы, и как пройден участок между остановками. Положение считается по расписанию — приложение не получает данные с GPS, поэтому это оценка с точностью до нескольких минут.

-

Расписание действует с 30.09.2020. Время московское (МСК).

+

Расписание сверено с официальным: отправления взяты из данных + диспетчерской службы перевозчика, летнее расписание + с 01.05.2026 по 31.10.2026. Время московское (МСК).

Карта и тайлы — VK Карты, геометрия дороги — OpenStreetMap. Пуш-уведомления приходят через RuStore Push — для этого нужен установленный и авторизованный RuStore на устройстве.

- +