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 @@
+
+
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 @@
+
+
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 @@
+
+
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 @@
+
+