{ "id": "transit_stops", "name": { "en": "Transit Stops", "de": "Haltestellen" }, "description": { "en": "Layer showing different types of transit stops.", "de": "Ebene mit verschiedenen Arten von Haltestellen." }, "source": { "osmTags": { "or": [ "highway=bus_stop" ] } }, "minzoom": 15, "title": { "render": { "en": "Transit Stop", "de": "Haltestelle" }, "mappings": [ { "if": "name~*", "then": { "en": "Stop {name}", "de": "Haltestelle {name}" } } ] }, "mapRendering": [ { "location": [ "point", "centroid" ], "icon": { "render": "./assets/layers/transit_stops/bus_stop.svg", "mappings": [] }, "label": "
{name}
" } ], "calculatedTags": [ "_routes=feat.memberships()", "_contained_routes_properties=feat.memberships().map(p => {return {id: p.relation.id, name: p.relation.properties.name} }).filter((v,i,a)=>a.findIndex(t=>(JSON.stringify(t) === JSON.stringify(v)))===i)", "_contained_route_ids=JSON.parse(feat.properties._contained_routes_properties ?? '[]').map(p => p.id)", "_contained_routes=JSON.parse(feat.properties._contained_routes_properties ?? '[]').map(p => `
  • ${p.name ?? 'bus route'}
  • `).join('')", "_contained_routes_count=JSON.parse(feat.properties._contained_routes_properties ?? '[]').length" ], "tagRenderings": [ { "id": "stop_name", "render": { "en": "This stop is called {name}", "de": "Der Name der Haltestelle lautet {name}" }, "freeform": { "key": "name", "type": "string", "addExtraTags": [ "noname=" ], "placeholder": { "en": "Name of the stop", "de": "Name der Haltestelle" } }, "mappings": [ { "if": { "and": [ "noname=yes", "name=" ] }, "then": { "en": "This stop has no name", "de": "Die Haltestelle hat keinen Namen" } } ], "question": { "en": "What is the name of this stop?", "de": "Wie lautet der Name der Haltestelle?" }, "placeholder": "Name of the stop" }, "images", { "id": "shelter", "mappings": [ { "if": "shelter=yes", "then": { "en": "This stop has a shelter", "de": "Die Haltestelle hat einen Unterstand" } }, { "if": "shelter=no", "then": { "en": "This stop does not have a shelter", "de": "Die Haltestelle hat keinen Unterstand" } }, { "if": "shelter=separate", "then": { "en": "This stop has a shelter, that's separately mapped", "de": "Die Haltestelle hat einen Unterstand, der separat kariert ist" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a shelter?", "de": "Hat die Haltestelle einen Unterstand?" } }, { "id": "bench", "mappings": [ { "if": "bench=yes", "then": { "en": "This stop has a bench", "de": "Die Haltestelle hat eine Bank" } }, { "if": "bench=no", "then": { "en": "This stop does not have a bench", "de": "Die Haltestelle hat keine Bank" } }, { "if": "bench=separate", "then": { "en": "This stop has a bench, that's separately mapped", "de": "Die Haltestelle hat eine Bank, die separat kartiert ist" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a bench?", "de": "Gibt es an der Haltestelle eine Sitzbank?" } }, { "id": "bin", "mappings": [ { "if": "bin=yes", "then": { "en": "This stop has a bin", "de": "Die Haltestelle hat einen Mülleimer" } }, { "if": "bin=no", "then": { "en": "This stop does not have a bin", "de": "Die Haltestelle hat keinen Mülleimer" } }, { "if": "bin=separate", "then": { "en": "This stop has a bin, that's separately mapped", "de": "Die Haltestelle hat einen Mülleimer, der separat kartiert ist" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a bin?", "de": "Hat die Haltestelle einen Mülleimer?" } }, "wheelchair-access", { "id": "tactile_paving", "mappings": [ { "if": "tactile_paving=yes", "then": { "en": "This stop has tactile paving", "de": "Die Haltestelle hat ein taktiles Pflaster" } }, { "if": "tactile_paving=no", "then": { "en": "This stop does not have tactile paving", "de": "Die Haltestelle hat kein taktiles Pflaster" } } ], "question": { "en": "Does this stop have tactile paving?", "de": "Hat die Haltestelle hat ein taktiles Pflaster?" } }, { "id": "lit", "mappings": [ { "if": "lit=yes", "then": { "en": "This stop is lit", "de": "Die Haltestelle ist beleuchtet" } }, { "if": "lit=no", "then": { "en": "This stop is not lit", "de": "Die Haltestelle ist nicht beleuchtet" } } ], "question": { "en": "Is this stop lit?", "de": "Ist die Haltestelle beleuchtet?" } }, { "id": "departures_board", "mappings": [ { "if": "departures_board=yes", "then": { "en": "This stop has a departures board of unknown type", "de": "Die Haltestelle hat einen Fahrplan, der nicht näher definiert ist" }, "hideInAnswer": true }, { "if": "departures_board=realtime", "then": { "en": "This stop has a board showing realtime departure information", "de": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" } }, { "if": "passenger_information_display=yes", "then": { "en": "This stop has a board showing realtime departure information", "de": "Die Haltestelle hat einen Fahrplan, der Abfahrtszeiten in Echtzeit anzeigt" }, "hideInAnswer": true }, { "if": "departures_board=timetable", "then": { "en": "This stop has a timetable showing regular departures", "de": "Die Haltestelle hat einen Fahrplan, der die regulären Abfahrtszeiten anzeigt" } }, { "if": "departures_board=interval", "then": { "en": "This stop has a timetable containing just the interval between departures", "de": "Die Haltestelle hat einen Fahrplan, der den Abstand zwischen Abfahrten anzeigt" } }, { "if": "departures_board=no", "then": { "en": "This stop does not have a departures board", "de": "Die Haltestelle hat keinen Fahrplan" } } ] }, { "render": { "en": "

    {_contained_routes_count} routes stop at this stop

    ", "de": "

    {_contained_routes_count} Linien halten an der Haltestelle

    " }, "condition": "_contained_routes~*", "id": "contained_routes" } ], "filter": [], "allowMove": false }