{ "id": "transit_stops", "name": { "en": "Transit Stops", "de": "Haltestellen", "da": "Transitstationer", "fr": "Arrêts de transport en commun", "ca": "Parades de transport públic" }, "description": { "en": "Layer showing different types of transit stops.", "de": "Ebene mit verschiedenen Arten von Haltestellen.", "da": "Lag, der viser forskellige typer transitstop." }, "source": { "osmTags": { "or": [ "highway=bus_stop" ] } }, "minzoom": 15, "title": { "render": { "en": "Transit Stop", "de": "Haltestelle", "da": "Transit Stop", "nl": "Bushalte" }, "mappings": [ { "if": "name~*", "then": { "en": "Stop {name}", "de": "Haltestelle {name}", "da": "Stop {name}", "nl": "Halte {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}", "da": "Dette stop hedder {name}", "nl": "Deze halte heet {name}", "ca": "Aquesta parada es diu {name}", "fr": "Cet arrêt est nommé {name}" }, "freeform": { "key": "name", "type": "string", "addExtraTags": [ "noname=" ], "placeholder": { "en": "Name of the stop", "de": "Name der Haltestelle", "da": "Navn på stoppestedet", "nl": "Naam van de halte" } }, "mappings": [ { "if": { "and": [ "noname=yes", "name=" ] }, "then": { "en": "This stop has no name", "de": "Die Haltestelle hat keinen Namen", "da": "Dette stop har intet navn", "nl": "Deze halte heeft geen naam", "ca": "Aquesta parada no té nom" } } ], "question": { "en": "What is the name of this stop?", "de": "Wie lautet der Name der Haltestelle?", "da": "Hvad er navnet på dette stop?", "nl": "Wat is de naam van deze halte?", "ca": "Quin és el nom d'aquesta parada?" } }, "images", { "id": "shelter", "mappings": [ { "if": "shelter=yes", "then": { "en": "This stop has a shelter", "de": "Die Haltestelle hat einen Unterstand", "da": "Dette stop har et ly", "nl": "Deze halte heeft een schuilplaats", "ca": "Aquesta parada té una coberta", "fr": "Cet arrêt a un abri" } }, { "if": "shelter=no", "then": { "en": "This stop does not have a shelter", "de": "Die Haltestelle hat keinen Unterstand", "da": "Dette stop har ikke et ly", "nl": "Deze halte heeft geen schuilplaats", "ca": "Aquesta parada no té una coberta", "fr": "Cet arrêt n'a pas d'abri" } }, { "if": "shelter=separate", "then": { "en": "This stop has a shelter, that's separately mapped", "de": "Die Haltestelle hat einen Unterstand, der separat kariert ist", "nl": "Deze halte heeft een schuilplaats, die apart op de kaart staat" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a shelter?", "de": "Hat die Haltestelle einen Unterstand?", "da": "Har dette stop et ly?", "nl": "Heeft deze halte een schuilplaats?", "ca": "Aquesta parada té una coberta?", "fr": "Cet arrêt a-t-il un abri ?" } }, { "id": "bench", "mappings": [ { "if": "bench=yes", "then": { "en": "This stop has a bench", "de": "Die Haltestelle hat eine Bank", "da": "Dette stop har en bænk", "nl": "Deze halte heeft een zitbank", "ca": "Aquesta parada té un banc", "fr": "Cet arrêt a un banc" } }, { "if": "bench=no", "then": { "en": "This stop does not have a bench", "de": "Die Haltestelle hat keine Sitzbank", "da": "Dette stoppested har ingen bænk", "nl": "Deze halte heeft geen zitbank", "ca": "Aquesta parada no té un banc", "fr": "Cet arrêt n'a pas de banc" } }, { "if": "bench=separate", "then": { "en": "This stop has a bench, that's separately mapped", "de": "Die Haltestelle hat eine Bank, die separat kartiert ist", "nl": "Deze halte heeft een zitbank, die los aangegeven is op de kaart" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a bench?", "de": "Gibt es an der Haltestelle eine Sitzbank?", "da": "Har dette stop en bænk?", "nl": "Heeft deze halte een zitbank?", "ca": "Aquesta parada té un banc?" } }, { "id": "bin", "mappings": [ { "if": "bin=yes", "then": { "en": "This stop has a bin", "de": "Die Haltestelle hat einen Mülleimer", "da": "Dette stop har en skraldespand", "nl": "Deze halte heeft een vuilnisbak", "ca": "Aquesta parada té una paperera", "fr": "Cet arrêt a un poubelle" } }, { "if": "bin=no", "then": { "en": "This stop does not have a bin", "de": "Die Haltestelle hat keinen Mülleimer", "da": "Dette stoppested har ikke en skraldespand", "nl": "Deze halte heeft geen vuilnisbak", "ca": "Aquesta parada no té paperera", "fr": "Cet arrêt n'a pas de poubelle" } }, { "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", "nl": "Deze heeft een vuilnisbak, die los op de kaart staat" }, "hideInAnswer": true } ], "question": { "en": "Does this stop have a bin?", "de": "Hat die Haltestelle einen Mülleimer?", "da": "Har dette stop en skraldespand?", "nl": "Heeft deze halte een vuilnisbak?", "ca": "Aquesta parada té una paperera?" } }, "wheelchair-access", { "id": "tactile_paving", "mappings": [ { "if": "tactile_paving=yes", "then": { "en": "This stop has tactile paving", "de": "Die Haltestelle hat ein taktiles Pflaster", "ca": "Aquesta parada té una superfície podotàctil", "nl": "Deze halte heeft een geleidelijn", "fr": "Cet arrêt a une surface podotactile" } }, { "if": "tactile_paving=no", "then": { "en": "This stop does not have tactile paving", "de": "Die Haltestelle hat kein taktiles Pflaster", "ca": "Aquesta parada no té superfície podotàctil", "nl": "Deze halte heeft geen geleidelijn", "fr": "Cet arrêt n'a pas de surface podotactile" } } ], "question": { "en": "Does this stop have tactile paving?", "de": "Hat die Haltestelle hat ein taktiles Pflaster?", "ca": "Aquesta parada té una superfície podotàctil?", "nl": "Heeft deze halte een geleidelijn?", "fr": "Cet arrêt a-t-il une surface podotactile ?" } }, { "id": "lit", "mappings": [ { "if": "lit=yes", "then": { "en": "This stop is lit", "de": "Die Haltestelle ist beleuchtet", "nl": "Deze halte is verlicht", "ca": "Aquesta parada té il·luminació", "fr": "Cet arrêt est éclairé" } }, { "if": "lit=no", "then": { "en": "This stop is not lit", "de": "Die Haltestelle hat keine Beleuchtung", "da": "Dette stop lyser ikke", "nl": "Deze halte is niet verlicht", "ca": "Aquesta parada no té il·luminació", "fr": "Cet arrêt n'est pas éclairé" } } ], "question": { "en": "Is this stop lit?", "de": "Ist die Haltestelle beleuchtet?", "nl": "Is deze halte verlicht?", "ca": "Aquesta parada té il·luminació?", "fr": "Cet arrêt est-il éclairé ?" } }, { "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", "da": "Dette stoppested har en afgangstavle af ukendt type" }, "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", "da": "Dette stop har en tavle med oplysninger om afgang i realtid", "fr": "Cet arrêt a un panneau indiquant les départs en temps réel", "ca": "Aquesta parada té un tauló amb els horaris en temps real" } }, { "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", "da": "Dette stop har en tavle med oplysninger om afgang i realtid", "ca": "Aquesta parada té un tauló amb els horaris en temps real" }, "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", "da": "Dette stop har en køreplan, der viser regelmæssige afgange" } }, { "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", "da": "Dette stop har en køreplan, der kun indeholder intervallet mellem afgangene" } }, { "if": "departures_board=no", "then": { "en": "This stop does not have a departures board", "de": "Die Haltestelle hat keinen Fahrplan", "da": "Dette stop har ikke en afgangstavle" } } ] }, { "render": { "en": "

    {_contained_routes_count} routes stop at this stop

    ", "de": "

    {_contained_routes_count} Linien halten an der Haltestelle

    ", "da": "

    {_contained_routes_count} ruter stopper ved dette stoppested

    ", "nl": "

    {_contained_routes_count} lijnen stoppen bij deze halte

    ", "ca": "

    {_contained_routes_count} rutes paren a aquesta parada

    " }, "condition": "_contained_routes~*", "id": "contained_routes" } ], "filter": [ { "id": "shelter", "options": [ { "osmTags": { "or": [ "shelter=yes", "shelter=separate" ] }, "question": { "en": "With a shelter", "de": "Mit Unterstand", "fr": "Avec un abri", "ca": "Amb refugi" } } ] }, { "id": "bench", "options": [ { "osmTags": { "or": [ "bench=yes", "bench=separate" ] }, "question": { "en": "With a bench", "de": "Mit Sitzbank", "fr": "Avec un banc" } } ] }, { "id": "bin", "options": [ { "osmTags": { "or": [ "bin=yes", "bin=separate" ] }, "question": { "en": "With a bin", "de": "Mit Mülleimer", "fr": "Avec un poubelle", "ca": "Amb paperera" } } ] }, "tactile_paving" ], "allowMove": false }