diff --git a/UI/Popup/TagRenderingQuestion.ts b/UI/Popup/TagRenderingQuestion.ts index df7a2ec176..d83740da4b 100644 --- a/UI/Popup/TagRenderingQuestion.ts +++ b/UI/Popup/TagRenderingQuestion.ts @@ -303,8 +303,8 @@ export default class TagRenderingQuestion extends Combine { const tr = mapping.then.Subs(tagsSource.data) const patchedMapping = { ...mapping, - iconClass: `small-height`, - icon: mapping.icon ?? (addIcons ? "./assets/svg/none.svg" : undefined), + iconClass: mapping.iconClass ?? `small-height`, + icon: mapping.icon ?? (addIcons ? "./assets/svg/none.svg" : undefined) } const fancy = TagRenderingQuestion.GenerateMappingContent( patchedMapping, diff --git a/assets/layers/fitness_centre/fitness_centre.json b/assets/layers/fitness_centre/fitness_centre.json new file mode 100644 index 0000000000..7e97391270 --- /dev/null +++ b/assets/layers/fitness_centre/fitness_centre.json @@ -0,0 +1,89 @@ +{ + "id": "fitness_centre", + "name": { + "en": "Fitness Centres" + }, + "description": { + "en": "Layer showing fitness centres" + }, + "source": { + "osmTags": "leisure=fitness_centre" + }, + "minzoom": 12, + "title": { + "render": { + "en": "Fitness Centre" + }, + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } + ] + }, + "tagRenderings": [ + { + "id": "name", + "question": { + "en": "What is the name of this fitness centre?" + }, + "freeform": { + "key": "name", + "placeholder": { + "en": "Name of fitness centre" + }, + "type": "string" + }, + "mappings": [ + { + "if": "noname=yes", + "then": { + "en": "This fitness centre has no name" + } + } + ], + "render": { + "en": "This fitness centre is called {name}" + } + }, + "images", + "phone", + "email", + "website", + "opening_hours", + "wheelchair-access", + "level", + "reviews" + ], + "presets": [ + { + "tags": [ + "leisure=fitness_centre" + ], + "title": { + "en": "a fitness centre" + }, + "icon": "./assets/layers/fitness_centre/gym.svg" + } + ], + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "circle:white;./assets/layers/fitness_centre/gym.svg", + "iconSize": "40,40,center", + "label": "
{name}
", + "iconBadges": [ + { + "if": "opening_hours~*", + "then": "isOpen" + } + ] + } + ], + "filter": [ + "open_now" + ] +} diff --git a/assets/layers/fitness_centre/gym.svg b/assets/layers/fitness_centre/gym.svg new file mode 100644 index 0000000000..dd2749e32a --- /dev/null +++ b/assets/layers/fitness_centre/gym.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/layers/fitness_centre/license_info.json b/assets/layers/fitness_centre/license_info.json new file mode 100644 index 0000000000..1499cb600d --- /dev/null +++ b/assets/layers/fitness_centre/license_info.json @@ -0,0 +1,13 @@ +[ + { + "path": "gym.svg", + "license": "CC-BY", + "authors": [ + "Bernd Lakenbrink", + "Noun Project" + ], + "sources": [ + "https://thenounproject.com/icon/gym-3583088/" + ] + } +] \ No newline at end of file diff --git a/assets/layers/fitness_station/07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_2.jpg b/assets/layers/fitness_station/07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_2.jpg new file mode 100644 index 0000000000..2559c174da Binary files /dev/null and b/assets/layers/fitness_station/07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_2.jpg differ diff --git a/assets/layers/fitness_station/Annecy_-_rower.jpg b/assets/layers/fitness_station/Annecy_-_rower.jpg new file mode 100644 index 0000000000..48708cf1a0 Binary files /dev/null and b/assets/layers/fitness_station/Annecy_-_rower.jpg differ diff --git a/assets/layers/fitness_station/Ansan_Park_beind_the_city_hall_022.jpg b/assets/layers/fitness_station/Ansan_Park_beind_the_city_hall_022.jpg new file mode 100644 index 0000000000..e2156173f8 Binary files /dev/null and b/assets/layers/fitness_station/Ansan_Park_beind_the_city_hall_022.jpg differ diff --git a/assets/layers/fitness_station/Battling_ropes.jpg b/assets/layers/fitness_station/Battling_ropes.jpg new file mode 100644 index 0000000000..15f2753052 Binary files /dev/null and b/assets/layers/fitness_station/Battling_ropes.jpg differ diff --git a/assets/layers/fitness_station/Captains_chair.jpg b/assets/layers/fitness_station/Captains_chair.jpg new file mode 100644 index 0000000000..b1b5e36af0 Binary files /dev/null and b/assets/layers/fitness_station/Captains_chair.jpg differ diff --git a/assets/layers/fitness_station/Exercise9159.jpg b/assets/layers/fitness_station/Exercise9159.jpg new file mode 100644 index 0000000000..5d2ae38b42 Binary files /dev/null and b/assets/layers/fitness_station/Exercise9159.jpg differ diff --git a/assets/layers/fitness_station/Exercise9170.jpg b/assets/layers/fitness_station/Exercise9170.jpg new file mode 100644 index 0000000000..145691e3bf Binary files /dev/null and b/assets/layers/fitness_station/Exercise9170.jpg differ diff --git a/assets/layers/fitness_station/Exercise_Box.jpg b/assets/layers/fitness_station/Exercise_Box.jpg new file mode 100644 index 0000000000..a81c932a24 Binary files /dev/null and b/assets/layers/fitness_station/Exercise_Box.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_beam_jump.jpg b/assets/layers/fitness_station/Fitness_station_beam_jump.jpg new file mode 100644 index 0000000000..3213326767 Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_beam_jump.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_hurdling.jpg b/assets/layers/fitness_station/Fitness_station_hurdling.jpg new file mode 100644 index 0000000000..8bb1a78756 Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_hurdling.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_leapfrog.jpg b/assets/layers/fitness_station/Fitness_station_leapfrog.jpg new file mode 100644 index 0000000000..4887d0a657 Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_leapfrog.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_slalom.jpg b/assets/layers/fitness_station/Fitness_station_slalom.jpg new file mode 100644 index 0000000000..b9cbedfccd Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_slalom.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_stepping_stone.jpg b/assets/layers/fitness_station/Fitness_station_stepping_stone.jpg new file mode 100644 index 0000000000..f927c83759 Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_stepping_stone.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_stretch_bars.jpg b/assets/layers/fitness_station/Fitness_station_stretch_bars.jpg new file mode 100644 index 0000000000..aba42f14da Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_stretch_bars.jpg differ diff --git a/assets/layers/fitness_station/Fitness_station_wall.jpg b/assets/layers/fitness_station/Fitness_station_wall.jpg new file mode 100644 index 0000000000..b56e2c920b Binary files /dev/null and b/assets/layers/fitness_station/Fitness_station_wall.jpg differ diff --git a/assets/layers/fitness_station/Horizontal_ladder.jpg b/assets/layers/fitness_station/Horizontal_ladder.jpg new file mode 100644 index 0000000000..f1a8b28eff Binary files /dev/null and b/assets/layers/fitness_station/Horizontal_ladder.jpg differ diff --git a/assets/layers/fitness_station/Inclined_sit-up_and_hyperextension_bench.jpg b/assets/layers/fitness_station/Inclined_sit-up_and_hyperextension_bench.jpg new file mode 100644 index 0000000000..06e7a49913 Binary files /dev/null and b/assets/layers/fitness_station/Inclined_sit-up_and_hyperextension_bench.jpg differ diff --git a/assets/layers/fitness_station/Inclined_sit-up_bench.jpg b/assets/layers/fitness_station/Inclined_sit-up_bench.jpg new file mode 100644 index 0000000000..47f7e6309d Binary files /dev/null and b/assets/layers/fitness_station/Inclined_sit-up_bench.jpg differ diff --git a/assets/layers/fitness_station/Log_lifting_exercise.jpg b/assets/layers/fitness_station/Log_lifting_exercise.jpg new file mode 100644 index 0000000000..240da200f8 Binary files /dev/null and b/assets/layers/fitness_station/Log_lifting_exercise.jpg differ diff --git a/assets/layers/fitness_station/Outdoor_fitness_station_sign.jpg b/assets/layers/fitness_station/Outdoor_fitness_station_sign.jpg new file mode 100644 index 0000000000..fb8842cbe7 Binary files /dev/null and b/assets/layers/fitness_station/Outdoor_fitness_station_sign.jpg differ diff --git a/assets/layers/fitness_station/Outdoor_stationary_bicycle.jpg b/assets/layers/fitness_station/Outdoor_stationary_bicycle.jpg new file mode 100644 index 0000000000..b3143857f8 Binary files /dev/null and b/assets/layers/fitness_station/Outdoor_stationary_bicycle.jpg differ diff --git a/assets/layers/fitness_station/Push-up_bars.jpg b/assets/layers/fitness_station/Push-up_bars.jpg new file mode 100644 index 0000000000..977cdb137c Binary files /dev/null and b/assets/layers/fitness_station/Push-up_bars.jpg differ diff --git a/assets/layers/fitness_station/RIAN_archive_493268_Sports_at_a_kindergarten.jpg b/assets/layers/fitness_station/RIAN_archive_493268_Sports_at_a_kindergarten.jpg new file mode 100644 index 0000000000..93b27f4204 Binary files /dev/null and b/assets/layers/fitness_station/RIAN_archive_493268_Sports_at_a_kindergarten.jpg differ diff --git a/assets/layers/fitness_station/Slacklineanlage_im_Dietenbachpark.jpg b/assets/layers/fitness_station/Slacklineanlage_im_Dietenbachpark.jpg new file mode 100644 index 0000000000..d2c46d16e8 Binary files /dev/null and b/assets/layers/fitness_station/Slacklineanlage_im_Dietenbachpark.jpg differ diff --git a/assets/layers/fitness_station/Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg b/assets/layers/fitness_station/Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg new file mode 100644 index 0000000000..47e83c880c Binary files /dev/null and b/assets/layers/fitness_station/Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg differ diff --git a/assets/layers/fitness_station/fitness.svg b/assets/layers/fitness_station/fitness.svg new file mode 100644 index 0000000000..d9c519e77f --- /dev/null +++ b/assets/layers/fitness_station/fitness.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/layers/fitness_station/fitness_station.json b/assets/layers/fitness_station/fitness_station.json new file mode 100644 index 0000000000..3ec9023ab6 --- /dev/null +++ b/assets/layers/fitness_station/fitness_station.json @@ -0,0 +1,364 @@ +{ + "id": "fitness_station", + "name": { + "en": "Fitness Stations" + }, + "description": { + "en": "Find a fitness station near you, and add missing ones." + }, + "source": { + "osmTags": "leisure=fitness_station" + }, + "minzoom": 12, + "title": { + "render": { + "en": "Fitness Station" + }, + "mappings": [ + { + "if": "name~*", + "then": { + "en": "Fitness Station {name}" + } + } + ] + }, + "tagRenderings": [ + { + "id": "name", + "question": { + "en": "What is the name of this fitness station?" + }, + "freeform": { + "key": "name", + "placeholder": { + "en": "Name of the fitness station" + }, + "type": "string" + }, + "mappings": [ + { + "if": "noname=yes", + "then": { + "en": "This fitness station doesn't have a name" + } + } + ], + "render": { + "en": "This fitness station is called {name}" + } + }, + { + "id": "type", + "question": { + "en": "What kind of equipment does this fitness station have?" + }, + "mappings": [ + { + "if": "fitness_station=horizontal_bar", + "then": { + "en": "This fitness station has a horizontal bar, high enough for pull-ups." + }, + "icon": { + "path": "./assets/layers/fitness_station/Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=sign", + "then": { + "en": "This fitness station has a sign with instructions for a specific exercise." + }, + "icon": { + "path": "./assets/layers/fitness_station/Outdoor_fitness_station_sign.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=sit-up", + "then": { + "en": "This fitness station has a facility for sit-ups." + }, + "icon": { + "path": "./assets/layers/fitness_station/Inclined_sit-up_bench.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=push-up", + "then": { + "en": "This fitness station has a facility for push-ups. Usually consists of one or more low horizontal bars." + }, + "icon": { + "path": "./assets/layers/fitness_station/Push-up_bars.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=stretch_bars", + "then": { + "en": "This fitness station has bars for stretching." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_stretch_bars.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=hyperextension", + "then": { + "en": "This fitness station has a station for making hyperextensions." + }, + "icon": { + "path": "./assets/layers/fitness_station/Inclined_sit-up_and_hyperextension_bench.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=rings", + "then": { + "en": "This fitness station has rings for gymnastic exercises." + }, + "icon": { + "path": "./assets/layers/fitness_station/Exercise9159.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=horizontal_ladder", + "then": { + "en": "This fitness station has a horizontal ladder, also known as monkey bars." + }, + "icon": { + "path": "./assets/layers/fitness_station/Horizontal_ladder.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=wall_bars", + "then": { + "en": "This fitness station has wall bars to climb on." + }, + "icon": { + "path": "./assets/layers/fitness_station/RIAN_archive_493268_Sports_at_a_kindergarten.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=slalom", + "then": { + "en": "This fitness station has posts for performing slalom exercises." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_slalom.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=stepping_stones", + "then": { + "en": "This fitness station has stepping stones." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_stepping_stone.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=leapfrog", + "then": { + "en": "This fitness station has cones for performing leapfrog jumps." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_leapfrog.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=beam_jump", + "then": { + "en": "This fitness station has beams to jump over." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_beam_jump.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=hurdling", + "then": { + "en": "This fitness station has hurdles to cross." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_hurdling.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=wall", + "then": { + "en": "This fitness station has a wall to climb on." + }, + "icon": { + "path": "./assets/layers/fitness_station/Fitness_station_wall.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=balance_beam", + "then": { + "en": "This fitness station has a balance beam." + }, + "icon": { + "path": "./assets/layers/fitness_station/Exercise9170.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=log_lifting", + "then": { + "en": "This fitness station has a log with a handle on the end to lift." + }, + "icon": { + "path": "./assets/layers/fitness_station/Log_lifting_exercise.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=captains_chair", + "then": { + "en": "This fitness station has a chair with only elbow supports and a rear (without seat), for performing leg raises." + }, + "icon": { + "path": "./assets/layers/fitness_station/Captains_chair.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=box", + "then": { + "en": "This fitness station has a box that can be used for jumping." + }, + "icon": { + "path": "./assets/layers/fitness_station/Exercise_Box.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=battling_ropes", + "then": { + "en": "This fitness station has battling ropes." + }, + "icon": { + "path": "./assets/layers/fitness_station/Battling_ropes.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=excercise_bike", + "then": { + "en": "This fitness station has a stationary bicycle." + }, + "icon": { + "path": "./assets/layers/fitness_station/Outdoor_stationary_bicycle.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=elliptical_trainer", + "then": { + "en": "This fitness station has a cross-trainer." + }, + "icon": { + "path": "./assets/layers/fitness_station/07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_2.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=air_walker", + "then": { + "en": "This fitness station has an air walker." + }, + "icon": { + "path": "./assets/layers/fitness_station/Ansan_Park_beind_the_city_hall_022.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=rower", + "then": { + "en": "This fitness station has a rower." + }, + "icon": { + "path": "./assets/layers/fitness_station/Annecy_-_rower.jpg", + "class": "large" + } + }, + { + "if": "fitness_station=slackline", + "then": { + "en": "This fitness station has a slackline." + }, + "icon": { + "path": "./assets/layers/fitness_station/Slacklineanlage_im_Dietenbachpark.jpg", + "class": "large" + } + } + ], + "multiAnswer": true + }, + { + "id": "operator", + "question": { + "en": "Who maintains this fitness station?" + }, + "freeform": { + "key": "operator", + "placeholder": { + "en": "Operator of the fitness station" + }, + "type": "string" + }, + "render": { + "en": "The fitness station is maintained by {operator}." + } + }, + "opening_hours" + ], + "presets": [ + { + "tags": [ + "leisure=fitness_station", + "sport=fitness" + ], + "title": { + "en": "a fitness station" + }, + "icon": "./assets/layers/fitness_station/fitness.svg" + } + ], + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "circle:white;./assets/layers/fitness_station/fitness.svg", + "iconSize": "40,40,center", + "iconBadges": [ + { + "if": { + "and": [ + "opening_hours!=24/7", + "opening_hours~*" + ] + }, + "then": "isOpen" + } + ] + } + ], + "filter": [ + "open_now" + ] +} diff --git a/assets/layers/fitness_station/license_info.json b/assets/layers/fitness_station/license_info.json new file mode 100644 index 0000000000..35d43e95eb --- /dev/null +++ b/assets/layers/fitness_station/license_info.json @@ -0,0 +1,264 @@ +[ + { + "path": "07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_2.jpg", + "license": "CC-BY-SA", + "authors": [ + "Kolforn" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:07-12-2016,_Fitness_trail,_Parque_da_Alfarrobeira,_Albufeira_(2).JPG" + ] + }, + { + "path": "Annecy_-_rower.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tiia Monto" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Annecy_-_rower.jpg" + ] + }, + { + "path": "Ansan_Park_beind_the_city_hall_022.jpg", + "license": "CC-BY-SA", + "authors": [ + "Piotrus" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Ansan_Park_(beind_the_city_hall)_022.JPG" + ] + }, + { + "path": "Battling_ropes.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Battling_ropes.jpg" + ] + }, + { + "path": "Captains_chair.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Captains_chair.jpg" + ] + }, + { + "path": "Exercise9159.jpg", + "license": "CC-BY-SA", + "authors": [ + "יעקב" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Exercise9159.jpg" + ] + }, + { + "path": "Exercise9170.jpg", + "license": "CC-BY-SA", + "authors": [ + "יעקב" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Exercise9170.JPG" + ] + }, + { + "path": "Exercise_Box.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Exercise_Box.jpg" + ] + }, + { + "path": "Fitness_station_beam_jump.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_beam_jump.jpg" + ] + }, + { + "path": "Fitness_station_hurdling.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_hurdling.jpg" + ] + }, + { + "path": "Fitness_station_leapfrog.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_leapfrog.jpg" + ] + }, + { + "path": "Fitness_station_slalom.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_slalom.jpg" + ] + }, + { + "path": "Fitness_station_stepping_stone.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_stepping_stone.jpg" + ] + }, + { + "path": "Fitness_station_stretch_bars.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_stretch_bars.jpg" + ] + }, + { + "path": "Fitness_station_wall.jpg", + "license": "CC-BY-SA", + "authors": [ + "Axelos", + "Al-Hun" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Fitness_station_wall.jpg" + ] + }, + { + "path": "Horizontal_ladder.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Horizontal_ladder.jpg" + ] + }, + { + "path": "Inclined_sit-up_and_hyperextension_bench.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Inclined_sit-up_and_hyperextension_bench.jpg" + ] + }, + { + "path": "Inclined_sit-up_bench.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Inclined_sit-up_bench.jpg" + ] + }, + { + "path": "Log_lifting_exercise.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Log_lifting_exercise.jpg" + ] + }, + { + "path": "Outdoor_fitness_station_sign.jpg", + "license": "CC-BY-SA", + "authors": [ + "kaitu" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Outdoor_fitness_station_sign.jpg", + "https://www.mapillary.com/app/?pKey=iWBo8pm9COksv8Qc8E7cfw&lat=45.87432166666667&lng=9.487998999999999&focus=photo&z=17&x=0.4903320875161608&y=0.48257487392238285&zoom=0" + ] + }, + { + "path": "Outdoor_stationary_bicycle.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Outdoor_stationary_bicycle.jpg" + ] + }, + { + "path": "Push-up_bars.jpg", + "license": "CC-BY-SA", + "authors": [ + "Tpikonen" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Push-up_bars.jpg" + ] + }, + { + "path": "RIAN_archive_493268_Sports_at_a_kindergarten.jpg", + "license": "CC-BY-SA", + "authors": [ + "Igor Utkin" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:RIAN_archive_493268_Sports_at_a_kindergarten.jpg" + ] + }, + { + "path": "Slacklineanlage_im_Dietenbachpark.jpg", + "license": "CC-BY-SA", + "authors": [ + "Andreas Schwarzkopf" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Slacklineanlage_im_Dietenbachpark.jpg" + ] + }, + { + "path": "Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg", + "license": "CC-BY-SA", + "authors": [ + "Zeitlupe" + ], + "sources": [ + "https://commons.wikimedia.org/wiki/File:Trimm-Dich-Pfad_Grünwalder_Forst_Klimmzüge.jpg" + ] + }, + { + "path": "fitness.svg", + "license": "CC0", + "authors": [ + "Kocio" + ], + "sources": [ + "https://github.com/gravitystorm/openstreetmap-carto/blob/master/symbols/leisure/fitness.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/speed_camera/license_info.json b/assets/layers/speed_camera/license_info.json new file mode 100644 index 0000000000..6c09b57947 --- /dev/null +++ b/assets/layers/speed_camera/license_info.json @@ -0,0 +1,13 @@ +[ + { + "path": "speed_camera.svg", + "license": "CC0", + "authors": [ + "Earlyswerver", + "OpenClipArt" + ], + "sources": [ + "https://en.wikipedia.org/wiki/File:Earlyswerver_UK_Speed_Camera_Sign.svg" + ] + } +] \ No newline at end of file diff --git a/assets/layers/speed_camera/speed_camera.json b/assets/layers/speed_camera/speed_camera.json new file mode 100644 index 0000000000..c249d78958 --- /dev/null +++ b/assets/layers/speed_camera/speed_camera.json @@ -0,0 +1,127 @@ +{ + "id": "speed_camera", + "name": { + "en": "Speed Camera" + }, + "description": { + "en": "Layer showing speed cameras" + }, + "title": { + "render": { + "en": "Speed Camera" + } + }, + "minzoom": 12, + "source": { + "osmTags": "highway=speed_camera" + }, + "tagRenderings": [ + { + "id": "maxspeed", + "question": { + "en": "What is the maximum speed allowed at this speed camera?" + }, + "freeform": { + "key": "maxspeed", + "type": "pnat", + "placeholder": { + "en": "Maximum speed allowed" + } + }, + "render": { + "en": "The maximum speed allowed is {canonical(maxspeed)}" + } + }, + { + "id": "ref", + "render": { + "en": "The reference number of this speed camera is {ref}" + }, + "condition": "ref~*" + } + ], + "presets": [ + { + "tags": [ + "highway=speed_camera" + ], + "title": { + "en": "a speed camera" + }, + "preciseInput": { + "preferredBackground": "photo", + "maxSnapDistance": 10, + "snapToLayer": [ + "maxspeed" + ] + } + } + ], + "mapRendering": [ + { + "icon": "square:white;./assets/layers/speed_camera/speed_camera.svg", + "location": [ + "point", + "centroid" + ] + } + ], + "units": [ + { + "appliesToKey": [ + "maxspeed" + ], + "applicableUnits": [ + { + "#": "km/h is the default for a maxspeed; should be empty string", + "canonicalDenomination": "", + "alternativeDenomination": [ + "km/u", + "kmh", + "kph" + ], + "human": { + "en": "kilometers/hour", + "ca": "quilòmetres/hora", + "es": "kilómetros/hora", + "nl": "kilometers/uur", + "de": "Kilometer/Stunde" + }, + "humanShort": { + "en": "km/h", + "ca": "km/h", + "es": "km/h", + "nl": "km/u", + "de": "km/h" + } + }, + { + "canonicalDenomination": "mph", + "useIfNoUnitGiven": [ + "gb", + "us" + ], + "alternativeDenomination": [ + "m/u", + "mh", + "m/ph" + ], + "human": { + "en": "miles/hour", + "ca": "milles/hora", + "es": "millas/hora", + "nl": "miles/uur", + "de": "Meilen/Stunde" + }, + "humanShort": { + "en": "mph", + "ca": "mph", + "es": "mph", + "nl": "mph", + "de": "mph" + } + } + ] + } + ] +} diff --git a/assets/layers/speed_camera/speed_camera.svg b/assets/layers/speed_camera/speed_camera.svg new file mode 100644 index 0000000000..3d4755a264 --- /dev/null +++ b/assets/layers/speed_camera/speed_camera.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + diff --git a/assets/layers/speed_display/license_info.json b/assets/layers/speed_display/license_info.json new file mode 100644 index 0000000000..04cf544188 --- /dev/null +++ b/assets/layers/speed_display/license_info.json @@ -0,0 +1,12 @@ +[ + { + "path": "speed_display.svg", + "license": "CC0", + "authors": [ + "Robin van der Linde" + ], + "sources": [ + "https://www.keshikan.net/fonts-e.html" + ] + } +] \ No newline at end of file diff --git a/assets/layers/speed_display/speed_display.json b/assets/layers/speed_display/speed_display.json new file mode 100644 index 0000000000..4c2b1fa488 --- /dev/null +++ b/assets/layers/speed_display/speed_display.json @@ -0,0 +1,132 @@ +{ + "id": "speed_display", + "name": { + "en": "Speed Display" + }, + "description": { + "en": "Layer showing speed displays that alert drivers of their speed." + }, + "title": { + "render": { + "en": "Speed Display" + } + }, + "minzoom": 12, + "source": { + "osmTags": "highway=speed_display" + }, + "tagRenderings": [ + { + "id": "maxspeed", + "question": { + "en": "What is the maximum speed allowed at this speed display?" + }, + "freeform": { + "key": "maxspeed", + "type": "pnat", + "placeholder": { + "en": "Speed allowed at speed display" + } + }, + "render": { + "en": "The maximum speed allowed at this speed display is {canonical(maxspeed)}" + } + }, + { + "id": "inscription", + "question": { + "en": "What is the text on this speed display?" + }, + "freeform": { + "key": "inscription", + "type": "string", + "placeholder": { + "en": "Text on speed display (e.g. 'Your speed')" + } + }, + "render": { + "en": "The text on this speed display is {inscription}" + } + } + ], + "presets": [ + { + "title": { + "en": "a speed display" + }, + "tags": [ + "highway=speed_display" + ], + "preciseInput": { + "preferredBackground": "photo" + } + } + ], + "mapRendering": [ + { + "location": [ + "point", + "centroid" + ], + "icon": "./assets/layers/speed_display/speed_display.svg" + } + ], + "units": [ + { + "appliesToKey": [ + "maxspeed" + ], + "applicableUnits": [ + { + "#": "km/h is the default for a maxspeed; should be empty string", + "canonicalDenomination": "", + "alternativeDenomination": [ + "km/u", + "kmh", + "kph" + ], + "human": { + "en": "kilometers/hour", + "ca": "quilòmetres/hora", + "es": "kilómetros/hora", + "nl": "kilometers/uur", + "de": "Kilometer/Stunde" + }, + "humanShort": { + "en": "km/h", + "ca": "km/h", + "es": "km/h", + "nl": "km/u", + "de": "km/h" + } + }, + { + "canonicalDenomination": "mph", + "useIfNoUnitGiven": [ + "gb", + "us" + ], + "alternativeDenomination": [ + "m/u", + "mh", + "m/ph" + ], + "human": { + "en": "miles/hour", + "ca": "milles/hora", + "es": "millas/hora", + "nl": "miles/uur", + "de": "Meilen/Stunde" + }, + "humanShort": { + "en": "mph", + "ca": "mph", + "es": "mph", + "nl": "mph", + "de": "mph" + } + } + ] + } + ] +} diff --git a/assets/layers/speed_display/speed_display.svg b/assets/layers/speed_display/speed_display.svg new file mode 100644 index 0000000000..45546f684b --- /dev/null +++ b/assets/layers/speed_display/speed_display.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/layers/sport_pitch/sport_pitch.json b/assets/layers/sport_pitch/sport_pitch.json index b1cfeb67c7..d5ec6eeebb 100644 --- a/assets/layers/sport_pitch/sport_pitch.json +++ b/assets/layers/sport_pitch/sport_pitch.json @@ -580,5 +580,8 @@ "width": "1", "fill": "false" } + ], + "filter": [ + "open_now" ] -} \ No newline at end of file +} diff --git a/assets/layers/sports_centre/license_info.json b/assets/layers/sports_centre/license_info.json new file mode 100644 index 0000000000..0cbc965a61 --- /dev/null +++ b/assets/layers/sports_centre/license_info.json @@ -0,0 +1,13 @@ +[ + { + "path": "sports_centre.svg", + "license": "CC-BY", + "authors": [ + "Hello world", + "The Noun Project" + ], + "sources": [ + "https://thenounproject.com/icon/rogers-centre-464379/" + ] + } +] \ No newline at end of file diff --git a/assets/layers/sports_centre/sports_centre.json b/assets/layers/sports_centre/sports_centre.json new file mode 100644 index 0000000000..2971a4db57 --- /dev/null +++ b/assets/layers/sports_centre/sports_centre.json @@ -0,0 +1,67 @@ +{ + "id": "sports_centre", + "name": { + "en": "Sports centres" + }, + "description": { + "en": "Indoor and outdoor sports centres can be found on this layer" + }, + "minzoom": 12, + "source": { + "osmTags": "leisure=sports_centre" + }, + "title": { + "render": { + "en": "Sports centre" + }, + "mappings": [ + { + "if": "name~*", + "then": "{name}" + } + ] + }, + "tagRenderings": [ + "images", + "opening_hours", + "phone", + "website", + "email", + "wheelchair-access" + ], + "presets": [ + { + "title": { + "en": "a sports centre" + }, + "tags": [ + "leisure=sports_centre" + ] + } + ], + "mapRendering": [ + { + "icon": "circle:white;./assets/layers/sports_centre/sports_centre.svg", + "iconBadges": [ + { + "if": "opening_hours~*", + "then": "isOpen" + } + ], + "location": [ + "point", + "centroid" + ] + }, + { + "color": "darkgreen", + "fill": "no" + } + ], + "allowMove": { + "enableImproveAccuracy": true + }, + "filter": [ + "open_now" + ] +} diff --git a/assets/layers/sports_centre/sports_centre.svg b/assets/layers/sports_centre/sports_centre.svg new file mode 100644 index 0000000000..2f59933a97 --- /dev/null +++ b/assets/layers/sports_centre/sports_centre.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index c661ab2b9d..161d3232d7 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -350,6 +350,10 @@ "if": "theme=sport_pitches", "then": "./assets/layers/sport_pitch/table_tennis.svg" }, + { + "if": "theme=sports", + "then": "./assets/themes/sports/sport.svg" + }, { "if": "theme=street_lighting", "then": "./assets/layers/street_lamps/street_lamp.svg" diff --git a/assets/themes/maxspeed/maxspeed.json b/assets/themes/maxspeed/maxspeed.json index 23114c8fbb..9d3e18d768 100644 --- a/assets/themes/maxspeed/maxspeed.json +++ b/assets/themes/maxspeed/maxspeed.json @@ -28,6 +28,8 @@ "startZoom": 1, "widenFactor": 0.01, "layers": [ - "maxspeed" + "maxspeed", + "speed_camera", + "speed_display" ] -} \ No newline at end of file +} diff --git a/assets/themes/sports/license_info.json b/assets/themes/sports/license_info.json new file mode 100644 index 0000000000..933127962a --- /dev/null +++ b/assets/themes/sports/license_info.json @@ -0,0 +1,13 @@ +[ + { + "path": "sport.svg", + "license": "CC-BY", + "authors": [ + "Tobias Zwick", + "modified from EmojiOne 2: U+26BD" + ], + "sources": [ + "https://github.com/streetcomplete/StreetComplete/blob/master/res/graphics/quest/sport.svg" + ] + } +] \ No newline at end of file diff --git a/assets/themes/sports/sport.svg b/assets/themes/sports/sport.svg new file mode 100644 index 0000000000..426e7c6459 --- /dev/null +++ b/assets/themes/sports/sport.svg @@ -0,0 +1,81 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/assets/themes/sports/sports.json b/assets/themes/sports/sports.json new file mode 100644 index 0000000000..f17d93c396 --- /dev/null +++ b/assets/themes/sports/sports.json @@ -0,0 +1,58 @@ +{ + "id": "sports", + "title": { + "en": "Sports", + "nl": "Sport" + }, + "shortDescription": { + "en": "Map showing sport facilities.", + "nl": "Kaart met sportfaciliteiten." + }, + "description": { + "en": "All about sports, find sport pitches, fitness centres and more.", + "nl": "Alles over sport: vind sportvelden, fitnesscentra en meer." + }, + "icon": "./assets/themes/sports/sport.svg", + "startLat": 0, + "startLon": 0, + "startZoom": 1, + "layers": [ + "sport_pitch", + "fitness_centre", + "fitness_station", + "sports_centre", + { + "builtin": "shops", + "override": { + "source": { + "osmTags": { + "and": [ + "shop=sports" + ] + } + }, + "presets": [ + { + "tags": [ + "shop=sports" + ], + "title": { + "en": "a sports shop", + "nl": "een sportwinkel" + }, + "description": { + "en": "Add a new shop selling sports goods.", + "nl": "Voeg een nieuwe winkel toe die sportartikelen verkoopt." + } + } + ], + "minzoom": 12, + "mapRendering": [ + { + "icon": "./assets/layers/id_presets/maki-shop.svg" + } + ] + } + } + ] +}