diff --git a/Models/ThemeConfig/PointRenderingConfig.ts b/Models/ThemeConfig/PointRenderingConfig.ts index 39dcec1563..c0c3cf962f 100644 --- a/Models/ThemeConfig/PointRenderingConfig.ts +++ b/Models/ThemeConfig/PointRenderingConfig.ts @@ -13,6 +13,7 @@ import Img from "../../UI/Base/Img"; import Combine from "../../UI/Base/Combine"; import {VariableUiElement} from "../../UI/Base/VariableUIElement"; + export default class PointRenderingConfig extends WithContextLoader { private static readonly allowed_location_codes = new Set(["point", "centroid", "start", "end","projected_centerpoint"]) @@ -126,13 +127,20 @@ export default class PointRenderingConfig extends WithContextLoader { public GetBaseIcon(tags?: any): BaseUIElement { tags = tags ?? {id: "node/-1"} - const rotation = Utils.SubstituteKeys(this.rotation?.GetRenderValue(tags)?.txt ?? "0deg", tags) - const htmlDefs = Utils.SubstituteKeys(this.icon?.GetRenderValue(tags)?.txt, tags) let defaultPin: BaseUIElement = undefined if (this.label === undefined) { defaultPin = Svg.teardrop_with_hole_green_svg() } - return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin) + if(this.icon === undefined){ + return defaultPin; + } + const rotation = Utils.SubstituteKeys(this.rotation?.GetRenderValue(tags)?.txt ?? "0deg", tags) + const htmlDefs = Utils.SubstituteKeys(this.icon?.GetRenderValue(tags)?.txt, tags) + if(htmlDefs === undefined){ + // This layer doesn't want to show an icon right now + return undefined + } + return PointRenderingConfig.FromHtmlMulti(htmlDefs, rotation, false, defaultPin) } public GetSimpleIcon(tags: UIEventSource): BaseUIElement { diff --git a/assets/layers/maxspeed/license_info.json b/assets/layers/maxspeed/license_info.json new file mode 100644 index 0000000000..b27ffbc1a8 --- /dev/null +++ b/assets/layers/maxspeed/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "living_street_be.svg", + "license": "CC0", + "authors": [ + "Belgische Wetgever" + ], + "sources": [ + "https://nl.wikipedia.org/wiki/Bestand:Belgian_road_sign_F12a.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/maxspeed/living_street_be.svg b/assets/layers/maxspeed/living_street_be.svg new file mode 100644 index 0000000000..c026fa216c --- /dev/null +++ b/assets/layers/maxspeed/living_street_be.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/layers/maxspeed/maxspeed.json b/assets/layers/maxspeed/maxspeed.json new file mode 100644 index 0000000000..b41fa24761 --- /dev/null +++ b/assets/layers/maxspeed/maxspeed.json @@ -0,0 +1,169 @@ +{ + "id": "maxspeed", + "name": { + "es": "Velocidad", + "ca": "Velocitat", + "en": "Maxspeed" + }, + "source": { + "osmTags": { + "and": [ + { + "or": [ + "highway=residential", + "highway=living_street", + "highway=motorway", + "highway=tertiary", + "highway=unclassified", + "highway=secondary", + "highway=primary", + "highway=trunk", + "highway=motorway", + "highway=tertiary_link", + "highway=secondary_link", + "highway=primary_link", + "highway=trunk_link", + "highway=motorway_link" + ] + }, + "type!=multipolygon", + "area!=yes" + ] + } + }, + "minzoom": 16, + "title": { + "render": { + "*": " {name}" + }, + "mappings": [ + { + "if": "name=", + "then": { + "en": "Road without a name" + } + } + ] + }, + "description": { + "en": "Shows the allowed speed for every road" + }, + "tagRenderings": [ + { + "render": { + "en": "The maximum allowed speed on this road is {maxspeed}" + }, + "question": { + "es": "Qué velocidad tiene", + "ca": "Quina velocitat té", + "en": "What is the legal maximum speed one is allowed to drive on this road?" + }, + "freeform": { + "key": "maxspeed", + "type": "pnat" + }, + "mappings": [ + { + "if": "highway=living_street", + "then": { + "en": "This is a living street, which has a maxspeed of 20km/h", + "nl": "Dit is een woonerf en heeft dus een maximale snelheid van 20km/h" + }, + "icon": { + "path":"./assets/layers/maxspeed/living_street_be.svg", + "size": "large" + }, + "hideInAnswer": "_country!=be" + } + ], + "id": "maxspeed-maxspeed" + } + ], + "allowSplit": true, + "mapRendering": [ + { + "render": null, + "icon": { + "mappings": [ + { + "if": "maxspeed~[1-9]0|1[0-4]0", + "then": "./assets/themes/maxspeed/maxspeed_{maxspeed}.svg" + } + ] + }, + "condition": "maxspeed!=30", + "iconSize": { + "render": "32,32,center" + }, + "location": [ + "point", + "projected_centerpoint" + ] + }, + { + "color": { + "render": "#000000", + "mappings": [ + { + "if": "maxspeed=", + "then": "#ff0000" + } + ] + }, + "width": { + "render": "3" + } + } + ], + "units": [ + { + "applicableUnits": [ + { + "#": "km/h is the default for a maxspeed; should be empty string", + "canonicalDenomination": "", + "alternativeDenomination": [ + "km/u", + "kmh", + "kph" + ], + "default": true, + "human": { + "en": "kilometers/hour", + "ca": "quilòmetres/hora", + "es": "kilómetros/hora", + "nl": "kilometers/uur" + }, + "humanShort": { + "en": "km/h", + "ca": "km/h", + "es": "km/h", + "nl": "km/u" + } + }, + { + "canonicalDenomination": "mph", + "alternativeDenomination": [ + "m/u", + "mh", + "m/ph" + ], + "human": { + "en": "miles/hour", + "ca": "milles/hora", + "es": "millas/hora", + "nl": "miles/uur" + }, + "humanShort": { + "en": "mph", + "ca": "mph", + "es": "mph", + "nl": "mph" + } + } + ], + "appliesToKey": [ + "maxspeed" + ] + } + ] +} \ No newline at end of file diff --git a/assets/themes/maxspeed/license_info.json b/assets/themes/maxspeed/license_info.json new file mode 100644 index 0000000000..a712dc2b63 --- /dev/null +++ b/assets/themes/maxspeed/license_info.json @@ -0,0 +1,152 @@ +[ + { + "path": "maxspeed_10.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_100.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_110.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_120.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_130.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_140.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_20.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_30.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_40.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_50.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_60.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_70.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_80.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_90.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + }, + { + "path": "maxspeed_logo.svg", + "license": "CC 4.0", + "authors": [ + "yopaseopor" + ], + "sources": [ + "https://raw.githubusercontent.com/yopaseopor/beta_preset_josm/master/ES/traffic_signs/ES/ES_R301-30.svg" + ] + } +] \ No newline at end of file diff --git a/assets/themes/maxspeed/maxspeed.json b/assets/themes/maxspeed/maxspeed.json new file mode 100644 index 0000000000..9b7edbf3a1 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed.json @@ -0,0 +1,24 @@ +{ + "id": "maxspeed", + "title": { + "es": "Velocidad", + "ca": "Velocitat", + "en": "Maxspeed" + }, + "shortDescription": { + "en": "This map shows the legally allowed maximum speed on every road." + }, + "description": { + "en": "This map shows the legally allowed maximum speed on every road. If a maxspeed is missing or wrong, you can correct it here." + }, + "maintainer": "", + "icon": "./assets/themes/maxspeed/maxspeed_logo.svg", + "version": "0", + "startLat": 0, + "startLon": 0, + "startZoom": 1, + "widenFactor": 0.01, + "layers": [ + "maxspeed" + ] +} \ No newline at end of file diff --git a/assets/themes/maxspeed/maxspeed_10.svg b/assets/themes/maxspeed/maxspeed_10.svg new file mode 100644 index 0000000000..5b4449c0ce --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_10.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_100.svg b/assets/themes/maxspeed/maxspeed_100.svg new file mode 100644 index 0000000000..2db1b0d0a2 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_100.svg @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_110.svg b/assets/themes/maxspeed/maxspeed_110.svg new file mode 100644 index 0000000000..038d11265a --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_110.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_120.svg b/assets/themes/maxspeed/maxspeed_120.svg new file mode 100644 index 0000000000..b3828d8484 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_120.svg @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_130.svg b/assets/themes/maxspeed/maxspeed_130.svg new file mode 100644 index 0000000000..17d86ebdac --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_130.svg @@ -0,0 +1,74 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_140.svg b/assets/themes/maxspeed/maxspeed_140.svg new file mode 100644 index 0000000000..17c7933de4 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_140.svg @@ -0,0 +1,74 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_20.svg b/assets/themes/maxspeed/maxspeed_20.svg new file mode 100644 index 0000000000..c629263114 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_20.svg @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_30.svg b/assets/themes/maxspeed/maxspeed_30.svg new file mode 100644 index 0000000000..90da471c49 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_30.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_40.svg b/assets/themes/maxspeed/maxspeed_40.svg new file mode 100644 index 0000000000..747d8e546b --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_40.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_50.svg b/assets/themes/maxspeed/maxspeed_50.svg new file mode 100644 index 0000000000..8d29b52150 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_50.svg @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_60.svg b/assets/themes/maxspeed/maxspeed_60.svg new file mode 100644 index 0000000000..e54bf3e014 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_60.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_70.svg b/assets/themes/maxspeed/maxspeed_70.svg new file mode 100644 index 0000000000..ef0bc2d2f2 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_70.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_80.svg b/assets/themes/maxspeed/maxspeed_80.svg new file mode 100644 index 0000000000..8e49f3e614 --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_80.svg @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_90.svg b/assets/themes/maxspeed/maxspeed_90.svg new file mode 100644 index 0000000000..5a87054b5d --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_90.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/assets/themes/maxspeed/maxspeed_logo.svg b/assets/themes/maxspeed/maxspeed_logo.svg new file mode 100644 index 0000000000..b8476bacef --- /dev/null +++ b/assets/themes/maxspeed/maxspeed_logo.svg @@ -0,0 +1,47 @@ + + + + + + +