diff --git a/amenity-points.mss b/amenity-points.mss index 98321520a6..faa93dc3f9 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -21,6 +21,7 @@ @landform-color: #d08f55; @leisure-green: darken(@park, 60%); @religious-icon: #000000; +@sport-icon: #46a083; @landcover-font-size: 10; @landcover-wrap-width-size: 30; // 3 em @@ -218,6 +219,34 @@ marker-clip: false; } + [feature = 'leisure_pitch'][sport = 'baseball'][zoom >= 18] { + marker-file: url('symbols/sport/baseball.svg'); + marker-fill: @sport-icon; + marker-placement: interior; + marker-clip: false; + } + + [feature = 'leisure_pitch'][sport = 'basketball'][zoom >= 19] { + marker-file: url('symbols/sport/basketball.svg'); + marker-fill: @sport-icon; + marker-placement: interior; + marker-clip: false; + } + + [feature = 'leisure_pitch'][sport = 'soccer'][zoom >= 18] { + marker-file: url('symbols/sport/soccer.svg'); + marker-fill: @sport-icon; + marker-placement: interior; + marker-clip: false; + } + + [feature = 'leisure_pitch'][sport = 'tennis'][zoom >= 19] { + marker-file: url('symbols/sport/tennis.svg'); + marker-fill: @sport-icon; + marker-placement: interior; + marker-clip: false; + } + [feature = 'tourism_artwork'][zoom >= 17] { [artwork_type != 'statue'] { marker-file: url('symbols/tourism/artwork.svg'); @@ -2565,6 +2594,9 @@ [feature = 'leisure_ice_rink'], [feature = 'leisure_pitch'] { text-fill: darken(@pitch, 40%); + [sport != null] { + text-dy: 10; + } } } } diff --git a/project.mml b/project.mml index 344d861980..ab1b9e4bd2 100644 --- a/project.mml +++ b/project.mml @@ -1486,7 +1486,7 @@ Layer: 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', 'swimming_area', 'fishing') + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', 'swimming_area', 'fishing', 'pitch') THEN leisure ELSE NULL END, 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'telescope', 'chimney', 'crane', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, @@ -1527,12 +1527,12 @@ Layer: ELSE NULL END AS "telescope:diameter", tags->'castle_type' as castle_type, - tags->'sport' as sport, tags->'information' as information, tags->'healthcare' as healthcare, tags->'memorial' as memorial, tags->'artwork_type' as artwork_type, tags->'vending' as vending, + CASE WHEN tags->'sport' IN ('baseball', 'basketball', 'soccer', 'tennis') then sport ELSE NULL as sport, CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'carpet', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fabric', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', @@ -1557,7 +1557,7 @@ Layer: OR (tags->'office') IS NOT NULL OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', 'outdoor_seating', 'bird_hide', - 'amusement_arcade', 'sports_centre', 'swimming_area', 'fishing') + 'amusement_arcade', 'sports_centre', 'swimming_area', 'fishing', 'pitch') OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'telescope', 'chimney', 'crane', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR "natural" IN ('spring') @@ -1629,7 +1629,7 @@ Layer: 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', 'dog_park', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', - 'swimming_area', 'fishing') THEN leisure ELSE NULL END, + 'swimming_area', 'fishing', 'pitch') THEN leisure ELSE NULL END, 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'telescope', 'chimney', 'crane', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, @@ -1689,12 +1689,12 @@ Layer: ELSE NULL END AS "telescope:diameter", tags->'castle_type' as castle_type, - tags->'sport' as sport, tags->'information' as information, tags->'healthcare' as healthcare, tags->'memorial' as memorial, tags->'artwork_type' as artwork_type, tags->'vending' as vending, + CASE WHEN tags->'sport' IN ('baseball', 'basketball', 'soccer', 'tennis') then sport ELSE NULL as sport, CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'carpet', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fabric', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', @@ -1720,7 +1720,7 @@ Layer: OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', 'dog_park', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', - 'swimming_area', 'fishing') + 'swimming_area', 'fishing', 'pitch') OR barrier IN ('toll_booth') OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk', 'communications_tower', 'telescope', 'chimney', 'crane', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) @@ -2127,7 +2127,7 @@ Layer: 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'fitness_centre', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', - 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area', 'fishing', 'ice_rink') THEN leisure ELSE NULL END, + 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area', 'fishing', 'ice_rink', 'pitch') THEN leisure ELSE NULL END, 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', @@ -2184,7 +2184,7 @@ Layer: ELSE NULL END AS "telescope:diameter", tags->'castle_type' as castle_type, - tags->'sport' as sport, + CASE WHEN tags->'sport' IN ('baseball', 'basketball', 'soccer', 'tennis') then sport ELSE NULL as sport, tags->'information' as information, tags->'healthcare' as healthcare, tags->'memorial' as memorial, @@ -2328,7 +2328,7 @@ Layer: 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'fitness_centre', 'sports_centre', 'stadium', 'track', 'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'slipway', 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', - 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area', 'fishing', 'ice_rink') THEN leisure ELSE NULL END, + 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area', 'fishing', 'ice_rink', 'pitch') THEN leisure ELSE NULL END, 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', @@ -2386,7 +2386,7 @@ Layer: tags->'recycling_type' as recycling_type, tags->'telescope:type' as "telescope:type", tags->'castle_type' as castle_type, - tags->'sport' as sport, + CASE WHEN tags->'sport' IN ('baseball', 'basketball', 'soccer', 'tennis') then sport ELSE NULL as sport, tags->'information' as information, tags->'healthcare' as healthcare, tags->'memorial' as memorial, diff --git a/symbols/sport/baseball.svg b/symbols/sport/baseball.svg new file mode 100644 index 0000000000..9966f81766 --- /dev/null +++ b/symbols/sport/baseball.svg @@ -0,0 +1,56 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/symbols/sport/basketball.svg b/symbols/sport/basketball.svg new file mode 100644 index 0000000000..68346c5c86 --- /dev/null +++ b/symbols/sport/basketball.svg @@ -0,0 +1,38 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/symbols/sport/soccer.svg b/symbols/sport/soccer.svg new file mode 100644 index 0000000000..cf9bdb8608 --- /dev/null +++ b/symbols/sport/soccer.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/symbols/sport/tennis.svg b/symbols/sport/tennis.svg new file mode 100644 index 0000000000..2b713d4bc2 --- /dev/null +++ b/symbols/sport/tennis.svg @@ -0,0 +1,35 @@ + + + + + + + image/svg+xml + + + + + + + +