diff --git a/src/data/transitFeeds.js b/src/data/transitFeeds.js index 3e9f9cebc..0f6844c65 100644 --- a/src/data/transitFeeds.js +++ b/src/data/transitFeeds.js @@ -547,6 +547,9 @@ function astuceRouteLabel(routeId) { return ASTUCE_ROUTES[routeId ?? '']?.label ?? astuceNetworkLabel(routeId); } +/** PID trolleybus lines: route_type 11 in PID's routes.txt (checked 2026-11-14). */ +const PID_TROLLEYBUS_LINES = new Set([51, 52, 53, 58, 59, 232, 275]); + /** * Prague PID route ids are `L` plus a number whose range says what runs it, * per PID's GTFS routes.txt (data.pid.cz, checked 2026-11-09): 1–99 trams @@ -566,10 +569,11 @@ function pidRoute(routeId) { const n = Number(match[1]); // i18n-ignore: line code, as signed if (n === 49) return { mode: 'funicular', label: 'LD' }; - if (n >= 50 && n <= 59) return { mode: 'trolleybus', label: String(n) }; + if (PID_TROLLEYBUS_LINES.has(n)) + return { mode: 'trolleybus', label: String(n) }; + if (n >= 50 && n <= 59) return { mode: 'bus', label: String(n) }; if (n < 100) return { mode: 'tram', label: String(n) }; if (n >= 800 && n < 900) return { mode: 'bus', label: `X${n - 800}` }; - if (n === 232 || n === 275) return { mode: 'trolleybus', label: String(n) }; if (n < 991) return { mode: 'bus', label: String(n) }; // i18n-ignore: metro line letters, as signed if (n <= 993) return { mode: 'subway', label: 'ABC'[n - 991] }; diff --git a/src/data/transitFeeds.test.mjs b/src/data/transitFeeds.test.mjs index 37ad82a56..85a3a8243 100644 --- a/src/data/transitFeeds.test.mjs +++ b/src/data/transitFeeds.test.mjs @@ -734,6 +734,7 @@ test('Prague route-id ranges give metro, trains, ferries and trolleybuses their ]; assert.deepEqual(read('L22'), ['tram', '22']); assert.deepEqual(read('L58'), ['trolleybus', '58']); + assert.deepEqual(read('L55'), ['bus', '55'], 'not a PID trolleybus line'); assert.deepEqual(read('L275'), ['trolleybus', '275'], 'route type 11'); assert.deepEqual(read('L49'), ['funicular', 'LD'], 'Petřín funicular'); assert.deepEqual(read('L135'), ['bus', '135']); diff --git a/src/voice/layerManifest.js b/src/voice/layerManifest.js index 60cda6f25..52cb0f90f 100644 --- a/src/voice/layerManifest.js +++ b/src/voice/layerManifest.js @@ -309,10 +309,15 @@ const layers = [ 'trams', 'subway', 'trolleybus', + 'trolleybuses', 'gondola', + 'gondolas', 'cable car', + 'cable cars', 'funicular', + 'funiculars', 'monorail', + 'monorails', ], context: false, query: {