diff --git a/Svg.ts b/Svg.ts
index 66d15883f..e787d439e 100644
--- a/Svg.ts
+++ b/Svg.ts
@@ -239,6 +239,11 @@ export default class Svg {
public static osm_logo_svg() { return new Img(Svg.osm_logo, true);}
public static osm_logo_ui() { return new FixedUiElement(Svg.osm_logo_img);}
+ public static pedestrian_crossing = " "
+ public static pedestrian_crossing_img = Img.AsImageElement(Svg.pedestrian_crossing)
+ public static pedestrian_crossing_svg() { return new Img(Svg.pedestrian_crossing, true);}
+ public static pedestrian_crossing_ui() { return new FixedUiElement(Svg.pedestrian_crossing_img);}
+
public static pencil = ""
public static pencil_img = Img.AsImageElement(Svg.pencil)
public static pencil_svg() { return new Img(Svg.pencil, true);}
@@ -319,6 +324,11 @@ export default class Svg {
public static statistics_svg() { return new Img(Svg.statistics, true);}
public static statistics_ui() { return new FixedUiElement(Svg.statistics_img);}
+ public static traffic_lights = " "
+ public static traffic_lights_img = Img.AsImageElement(Svg.traffic_lights)
+ public static traffic_lights_svg() { return new Img(Svg.traffic_lights, true);}
+ public static traffic_lights_ui() { return new FixedUiElement(Svg.traffic_lights_img);}
+
public static translate = " "
public static translate_img = Img.AsImageElement(Svg.translate)
public static translate_svg() { return new Img(Svg.translate, true);}
@@ -344,4 +354,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
-public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
+public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"barrier.svg": Svg.barrier,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"cycle-infra.svg": Svg.cycle_infra,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pedestrian_crossing.svg": Svg.pedestrian_crossing,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"traffic_lights.svg": Svg.traffic_lights,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json
new file mode 100644
index 000000000..affcb8a65
--- /dev/null
+++ b/assets/layers/crossings/crossings.json
@@ -0,0 +1,99 @@
+{
+ "id": "crossings",
+ "name": {
+ "en": "Crossings",
+ "nl": "Oversteekplaatsen"
+ },
+ "description": {
+ "en": "Crossings for pedestrians and cyclists",
+ "nl": "Oversteekplaatsen voor voetgangers en fietsers"
+ },
+ "source": {
+ "osmTags": {
+ "or": ["highway=traffic_signals", "highway=crossing"]
+ }
+ },
+ "minzoom": 14,
+ "title": {
+ "render": {
+ "en": "Crossing",
+ "nl": "Oversteekplaats"
+ },
+ "mappings": [
+ {
+ "if": "highway=traffic_signals",
+ "then": {
+ "en": "Traffic signal",
+ "nl": "Verkeerslicht"
+ }
+ },
+ {
+ "if": "crossing=traffic_signals",
+ "then": {
+ "en": "Crossing with traffic signals",
+ "nl": "Oversteektplaats met verkeerslichten"
+ }
+ }
+ ]
+ },
+ "icon": {
+ "render": "./assets/svg/pedestrian_crossing.svg",
+ "mappings": [
+ {
+ "if": {
+ "or": ["highway=traffic_signals", "crossing=traffic_signals"]
+ },
+ "then": "./assets/svg/traffic_lights.svg"
+ }
+ ]
+ },
+ "width": "5",
+ "tagRenderings": [
+ {
+ "question": {
+ "en": "What kind of crossing is this?",
+ "nl": "Wat voor oversteekplaats is dit?"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "crossing=uncontrolled",
+ "then": {
+ "en": "Crossing, without traffic lights",
+ "nl": "Oversteekplaats, zonder verkeerslichten"
+ }
+ },
+ {
+ "if": "crossing=traffic_signals",
+ "then": {
+ "en": "Crossing with traffic signals",
+ "nl": "Oversteekplaats met verkeerslichten"
+ }
+ }
+ ]
+ },
+ {
+ "question": {
+ "en": "Is this crossing also for bicycles?",
+ "nl": "Is deze oversteekplaats ook voor fietsers"
+ },
+ "condition": "highway=crossing",
+ "mappings": [
+ {
+ "if": "bicycle=yes",
+ "then": {
+ "en": "A cyclist can use this crossing",
+ "nl": "Een fietser kan deze oversteekplaats gebruiken"
+ }
+ },
+ {
+ "if": "bicycle=no",
+ "then": {
+ "en": "A cyclist can not use this crossing",
+ "nl": "Een fietser kan niet deze oversteekplaats gebruiken"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/assets/svg/license_info.json b/assets/svg/license_info.json
index ef0b9ac31..53f8dc63a 100644
--- a/assets/svg/license_info.json
+++ b/assets/svg/license_info.json
@@ -81,10 +81,10 @@
},
{
"authors": [
- "westnordost"
+ "Tobias Zwick"
],
"path": "barrier.svg",
- "license": "GPL-3.0",
+ "license": "CC-BY-SA 4.0",
"sources": [
"https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/barrier.svg"
]
@@ -342,6 +342,16 @@
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
},
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "pedestrian_crossing.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/pedestrian_crossing.svg"
+ ]
+ },
{
"authors": [],
"path": "star.svg",
@@ -366,6 +376,16 @@
"license": "CC0; trivial",
"sources": []
},
+ {
+ "authors": [
+ "Tobias Zwick"
+ ],
+ "path": "traffic_lights.svg",
+ "license": "CC-BY-SA 4.0",
+ "sources": [
+ "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest%20icons/traffic_lights.svg"
+ ]
+ },
{
"authors": [],
"path": "logo.svg",
diff --git a/assets/svg/pedestrian_crossing.svg b/assets/svg/pedestrian_crossing.svg
new file mode 100644
index 000000000..843eefbbc
--- /dev/null
+++ b/assets/svg/pedestrian_crossing.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/assets/svg/traffic_lights.svg b/assets/svg/traffic_lights.svg
new file mode 100644
index 000000000..dd1d85637
--- /dev/null
+++ b/assets/svg/traffic_lights.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/assets/themes/cycle_infra/cycle_infra.json b/assets/themes/cycle_infra/cycle_infra.json
index 1cbf11567..a488a9ba3 100644
--- a/assets/themes/cycle_infra/cycle_infra.json
+++ b/assets/themes/cycle_infra/cycle_infra.json
@@ -635,15 +635,15 @@
},
{
"render": {
- "en": "Maximum width: {maxwidth} m",
- "nl": "Maximumbreedte: {maxwidth} m"
+ "en": "Maximum width: {maxwidth:physical} m",
+ "nl": "Maximumbreedte: {maxwidth:physical} m"
},
"question": {
"en": "How wide is the gap left over besides the barrier?",
"nl": "Hoe breed is de ruimte naast de barrière?"
},
"freeform": {
- "key": "maxwidth",
+ "key": "maxwidth:physical",
"type": "pfloat"
}
},
@@ -652,6 +652,7 @@
"en": "What kind of bollard is this?",
"nl": "Wat voor soort paal is dit?"
},
+ "condition": "barrier=bollard",
"mappings": [
{
"if": "bollard=removable",
@@ -691,6 +692,7 @@
]
}
]
- }
+ },
+ "crossings"
]
}