This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git


The following commit(s) were added to refs/heads/main by this push:
     new a77cfcba Improve the style (#833)
a77cfcba is described below

commit a77cfcba65ecf40a8cc6d28be2c493ee662dfed3
Author: Bertil Chapuis <[email protected]>
AuthorDate: Wed Feb 21 13:58:47 2024 +0100

    Improve the style (#833)
    
    * Improve railway tunnel
    
    * Replace dashed lines with straight lines
    
    * Add a default icons file
    
    * Reorder natural layers
    
    * Add some barriers
    
    * Improve parkings
---
 basemap/assets/README.md          |    1 +
 basemap/assets/icons.json         | 2050 ++++++++++++++++++++++++++++++++++++
 basemap/assets/icons.png          |  Bin 0 -> 84217 bytes
 basemap/layers/amenity/icon.js    | 2066 +++++++++++++++++++++++++++++++++++++
 basemap/layers/amenity/overlay.js |   13 +-
 basemap/layers/barrier/line.js    |   16 +
 basemap/layers/natural/overlay.js |    8 +-
 basemap/layers/railway/line.js    |    9 +
 basemap/layers/railway/tunnel.js  |   87 +-
 basemap/style.js                  |    2 +-
 basemap/themes/default.js         |    8 +
 11 files changed, 4245 insertions(+), 15 deletions(-)

diff --git a/basemap/assets/README.md b/basemap/assets/README.md
index aa6f4c6c..47de1661 100644
--- a/basemap/assets/README.md
+++ b/basemap/assets/README.md
@@ -15,6 +15,7 @@ Both spritezero and spreet can be used to generate the png 
and json files from t
 ```
 volta install node@10
 npm install -g @elastic/spritezero-cli
+spritezero --ratio=1 --sdf icons icons
 spritezero --ratio=1 --sdf icons@1x icons
 spritezero --ratio=1 --sdf icons@2x icons
 spritezero --ratio=1 --sdf icons@4x icons
diff --git a/basemap/assets/icons.json b/basemap/assets/icons.json
new file mode 100644
index 00000000..8e8453eb
--- /dev/null
+++ b/basemap/assets/icons.json
@@ -0,0 +1,2050 @@
+{
+  "advertising_column": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 37,
+    "y": 0
+  },
+  "aerodrome": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 131,
+    "y": 375
+  },
+  "alcohol": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 55
+  },
+  "alpinehut": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 55
+  },
+  "amusement_arcade": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 55
+  },
+  "apartment": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 75
+  },
+  "archaeological_site": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 75
+  },
+  "art": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 75
+  },
+  "arts_centre": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 95
+  },
+  "artwork": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 95
+  },
+  "atm": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 95
+  },
+  "audioguide": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 55
+  },
+  "bag": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 55
+  },
+  "bakery": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 55
+  },
+  "bank": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 75
+  },
+  "bar": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 149,
+    "y": 375
+  },
+  "bbq": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 75
+  },
+  "beach_resort": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 75
+  },
+  "beauty": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 95
+  },
+  "bed": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 95
+  },
+  "bell_tower": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 95
+  },
+  "bench": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 52,
+    "y": 29
+  },
+  "beverages": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 72,
+    "y": 29
+  },
+  "bicycle": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 92,
+    "y": 29
+  },
+  "bicycle_parking": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 57,
+    "y": 0
+  },
+  "bicycle_repair_station": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 77,
+    "y": 0
+  },
+  "biergarten": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 97,
+    "y": 0
+  },
+  "bird_hide": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 115
+  },
+  "board": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 115
+  },
+  "boat_rental": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 115
+  },
+  "bookmaker": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 115
+  },
+  "bowling_alley": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 115
+  },
+  "buddhist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 115
+  },
+  "bunker": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 135
+  },
+  "bureau_de_change": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 135
+  },
+  "bus_station": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 135
+  },
+  "bus_stop": {
+    "height": 16,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 16,
+    "x": 107,
+    "y": 395
+  },
+  "bust": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 135
+  },
+  "butcher": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 135
+  },
+  "cafe": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 135
+  },
+  "camping": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 155
+  },
+  "car": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 155
+  },
+  "car_parts": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 155
+  },
+  "car_repair": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 155
+  },
+  "car_wash": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 155
+  },
+  "caravan_park": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 155
+  },
+  "carpet": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 175
+  },
+  "casino": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 175
+  },
+  "castle": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 175
+  },
+  "cave": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 175
+  },
+  "chalet": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 175
+  },
+  "charging_station": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 175
+  },
+  "charity": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 195
+  },
+  "chemist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 195
+  },
+  "chimney": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 195
+  },
+  "christian": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 195
+  },
+  "cinema": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 195
+  },
+  "city_gate": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 195
+  },
+  "clothes": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 55
+  },
+  "coffee": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 55
+  },
+  "communications_tower": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 55
+  },
+  "community_centre": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 55
+  },
+  "computer": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 55
+  },
+  "confectionery": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 55
+  },
+  "consulate": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 75
+  },
+  "convenience": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 75
+  },
+  "copyshop": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 75
+  },
+  "courthouse": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 75
+  },
+  "crane": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 75
+  },
+  "cross": {
+    "height": 13,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 13,
+    "x": 227,
+    "y": 395
+  },
+  "cycle_barrier": {
+    "height": 16,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 16,
+    "x": 123,
+    "y": 395
+  },
+  "dairy": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 75
+  },
+  "deli": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 95
+  },
+  "dentist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 95
+  },
+  "department_store": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 95
+  },
+  "diy": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 95
+  },
+  "doctors": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 95
+  },
+  "drinking_water": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 95
+  },
+  "electronics": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 115
+  },
+  "elevator": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 167,
+    "y": 375
+  },
+  "embassy": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 115
+  },
+  "emergency_phone": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 115
+  },
+  "entrance": {
+    "height": 16,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 16,
+    "x": 139,
+    "y": 395
+  },
+  "excrement_bags": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 115
+  },
+  "fabric": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 115
+  },
+  "fast_food": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 115
+  },
+  "ferry": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 135
+  },
+  "firepit": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 135
+  },
+  "firestation": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 135
+  },
+  "fishing": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 135
+  },
+  "fitness": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 135
+  },
+  "florist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 135
+  },
+  "ford": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 155
+  },
+  "fort": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 155
+  },
+  "fortress": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 155
+  },
+  "fountain": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 155
+  },
+  "fuel": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 155
+  },
+  "full-height_turnstile": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 185,
+    "y": 375
+  },
+  "furniture": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 155
+  },
+  "garden_centre": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 175
+  },
+  "gate": {
+    "height": 11,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 12,
+    "x": 75,
+    "y": 413
+  },
+  "generator_wind": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 175
+  },
+  "gift": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 175
+  },
+  "golf": {
+    "height": 26,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 26,
+    "x": 0,
+    "y": 29
+  },
+  "golf_pin": {
+    "height": 29,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 15,
+    "x": 0,
+    "y": 0
+  },
+  "greengrocer": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 175
+  },
+  "guest_house": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 175
+  },
+  "guidepost": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 175
+  },
+  "hairdresser": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 195
+  },
+  "helipad": {
+    "height": 22,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 22,
+    "x": 15,
+    "y": 0
+  },
+  "hifi": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 195
+  },
+  "hinduist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 195
+  },
+  "hospital": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 195
+  },
+  "hostel": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 195
+  },
+  "hotel": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 195
+  },
+  "houseware": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 112,
+    "y": 29
+  },
+  "hunting_stand": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 132,
+    "y": 29
+  },
+  "ice_cream": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 152,
+    "y": 29
+  },
+  "interior_decoration": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 172,
+    "y": 29
+  },
+  "internet_cafe": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 192,
+    "y": 29
+  },
+  "jewelry": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 212,
+    "y": 29
+  },
+  "jewish": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 117,
+    "y": 0
+  },
+  "kissing_gate": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 203,
+    "y": 375
+  },
+  "laundry": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 137,
+    "y": 0
+  },
+  "level_crossing": {
+    "height": 13,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 13,
+    "x": 0,
+    "y": 413
+  },
+  "level_crossing2": {
+    "height": 17,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 17,
+    "x": 90,
+    "y": 395
+  },
+  "library": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 157,
+    "y": 0
+  },
+  "lift_gate": {
+    "height": 11,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 12,
+    "x": 87,
+    "y": 413
+  },
+  "lighthouse": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 177,
+    "y": 0
+  },
+  "manor": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 197,
+    "y": 0
+  },
+  "map": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 217,
+    "y": 0
+  },
+  "marketplace": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 215
+  },
+  "massage": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 215
+  },
+  "mast": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 215
+  },
+  "mast_communications": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 215
+  },
+  "mast_lighting": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 215
+  },
+  "medical_supply": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 215
+  },
+  "memorial": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 215
+  },
+  "miniature_golf": {
+    "height": 26,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 26,
+    "x": 26,
+    "y": 29
+  },
+  "mobile_phone": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 215
+  },
+  "monument": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 215
+  },
+  "motel": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 215
+  },
+  "motorcycle": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 215
+  },
+  "motorcycle_barrier": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 215
+  },
+  "motorcycle_parking": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 235
+  },
+  "museum": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 235
+  },
+  "music": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 235
+  },
+  "musical_instrument": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 235
+  },
+  "muslim": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 235
+  },
+  "newsagent": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 235
+  },
+  "nightclub": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 235
+  },
+  "obelisk": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 235
+  },
+  "office": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 235
+  },
+  "oneway": {
+    "height": 11,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 99,
+    "y": 413
+  },
+  "oneway-reverse": {
+    "height": 11,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 117,
+    "y": 413
+  },
+  "optician": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 235
+  },
+  "outdoor": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 235
+  },
+  "outdoor_seating": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 235
+  },
+  "paint": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 255
+  },
+  "palace": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 255
+  },
+  "parking": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 221,
+    "y": 375
+  },
+  "parking_entrance_multistorey": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 255
+  },
+  "parking_entrance_underground": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 255
+  },
+  "parking_subtle": {
+    "height": 13,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 13,
+    "x": 13,
+    "y": 413
+  },
+  "parking_tickets": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 255
+  },
+  "peak": {
+    "height": 14,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 14,
+    "x": 171,
+    "y": 395
+  },
+  "perfumery": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 255
+  },
+  "pet": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 255
+  },
+  "pharmacy": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 255
+  },
+  "photo": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 255
+  },
+  "picnic": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 255
+  },
+  "place-4": {
+    "height": 10,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 10,
+    "x": 135,
+    "y": 413
+  },
+  "place-4-z7": {
+    "height": 10,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 10,
+    "x": 145,
+    "y": 413
+  },
+  "place-6": {
+    "height": 12,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 12,
+    "x": 39,
+    "y": 413
+  },
+  "place-6-z7": {
+    "height": 12,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 12,
+    "x": 51,
+    "y": 413
+  },
+  "place-capital-6": {
+    "height": 12,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 12,
+    "x": 63,
+    "y": 413
+  },
+  "place-capital-8": {
+    "height": 14,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 14,
+    "x": 185,
+    "y": 395
+  },
+  "place_of_worship": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 255
+  },
+  "plaque": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 0,
+    "y": 395
+  },
+  "playground": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 255
+  },
+  "police": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 275
+  },
+  "post_box": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 18,
+    "y": 395
+  },
+  "post_office": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 275
+  },
+  "power_tower": {
+    "height": 13,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 13,
+    "x": 26,
+    "y": 413
+  },
+  "power_tower_small": {
+    "height": 9,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 9,
+    "x": 155,
+    "y": 413
+  },
+  "prison": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 275
+  },
+  "pub": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 36,
+    "y": 395
+  },
+  "public_bath": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 275
+  },
+  "public_bookcase": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 275
+  },
+  "public_transport_tickets": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 275
+  },
+  "recycling": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 275
+  },
+  "rental_bicycle": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 275
+  },
+  "rental_car": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 275
+  },
+  "restaurant": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 275
+  },
+  "saddle": {
+    "height": 14,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 14,
+    "x": 199,
+    "y": 395
+  },
+  "sauna": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 275
+  },
+  "seafood": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 275
+  },
+  "second_hand": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 295
+  },
+  "shelter": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 295
+  },
+  "shintoist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 295
+  },
+  "shoes": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 295
+  },
+  "shower": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 295
+  },
+  "shrine": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 295
+  },
+  "sikhist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 295
+  },
+  "slipway": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 295
+  },
+  "social_facility": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 295
+  },
+  "sports": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 295
+  },
+  "spring": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 54,
+    "y": 395
+  },
+  "stationery": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 295
+  },
+  "statue": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 295
+  },
+  "stile": {
+    "height": 16,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 16,
+    "x": 155,
+    "y": 395
+  },
+  "stone": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 315
+  },
+  "storage_tank": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 315
+  },
+  "supermarket": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 315
+  },
+  "taoist": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 315
+  },
+  "taxi": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 315
+  },
+  "tea": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 315
+  },
+  "telephone": {
+    "height": 18,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 18,
+    "x": 72,
+    "y": 395
+  },
+  "telescope_dish": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 315
+  },
+  "telescope_dome": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 315
+  },
+  "terminal": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 315
+  },
+  "theatre": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 315
+  },
+  "ticket": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 315
+  },
+  "tobacco": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 315
+  },
+  "toilets": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 335
+  },
+  "toll_booth": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 335
+  },
+  "tower_cantilever_communication": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 335
+  },
+  "tower_cooling": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 335
+  },
+  "tower_defensive": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 335
+  },
+  "tower_dish": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 335
+  },
+  "tower_dome": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 335
+  },
+  "tower_generic": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 335
+  },
+  "tower_lattice": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 335
+  },
+  "tower_lattice_communication": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 335
+  },
+  "tower_lattice_lighting": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 335
+  },
+  "tower_lighting": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 335
+  },
+  "tower_observation": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 355
+  },
+  "town_hall": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 355
+  },
+  "toys": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 355
+  },
+  "trade": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 355
+  },
+  "traffic_light": {
+    "height": 19,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 11,
+    "x": 120,
+    "y": 375
+  },
+  "travel_agency": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 355
+  },
+  "tyres": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 355
+  },
+  "variety_store": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 120,
+    "y": 355
+  },
+  "vehicle_inspection": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 140,
+    "y": 355
+  },
+  "veterinary": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 160,
+    "y": 355
+  },
+  "video": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 180,
+    "y": 355
+  },
+  "video_games": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 200,
+    "y": 355
+  },
+  "viewpoint": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 220,
+    "y": 355
+  },
+  "waste_basket": {
+    "height": 14,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 14,
+    "x": 213,
+    "y": 395
+  },
+  "waste_disposal": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 0,
+    "y": 375
+  },
+  "water_park": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 20,
+    "y": 375
+  },
+  "water_tower": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 40,
+    "y": 375
+  },
+  "waterfall": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 60,
+    "y": 375
+  },
+  "wilderness_hut": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 80,
+    "y": 375
+  },
+  "windmill": {
+    "height": 20,
+    "pixelRatio": 1,
+    "sdf": true,
+    "width": 20,
+    "x": 100,
+    "y": 375
+  }
+}
\ No newline at end of file
diff --git a/basemap/assets/icons.png b/basemap/assets/icons.png
new file mode 100644
index 00000000..52d290c6
Binary files /dev/null and b/basemap/assets/icons.png differ
diff --git a/basemap/layers/amenity/icon.js b/basemap/layers/amenity/icon.js
new file mode 100644
index 00000000..14ec646c
--- /dev/null
+++ b/basemap/layers/amenity/icon.js
@@ -0,0 +1,2066 @@
+/**
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to you under the Apache License, Version 2.0
+ (the 'License'); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ **/
+import {asLayerObject, withSortKeys} from '../../utils/utils.js';
+import theme from '../../theme.js';
+
+/**
+ * These directives are based on the following source:
+ * https://wiki.openstreetmap.org/wiki/OpenStreetMap_Carto/Symbols
+ */
+let directives = [
+
+    // Gastronomy
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'restaurant'],
+            ['==', ['get', 'amenity'], 'food_court']
+        ],
+        'icon-image': 'restaurant',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'cafe'],
+        'icon-image': 'cafe',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'fast_food'],
+        'icon-image': 'fast_food',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bar'],
+        'icon-image': 'bar',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'pub'],
+        'icon-image': 'pub',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'ice_cream'],
+        'icon-image': 'ice_cream',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'biergarten'],
+        'icon-image': 'biergarten',
+        'icon-color': theme.gastronomyIconColor,
+        'text-color': theme.gastronomyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'outdoor_seating'],
+        'icon-image': 'outdoor_seating',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+
+    // Culture, entertainment, and arts
+    {
+        'filter': ['==', ['get', 'tourism'], 'artwork'],
+        'icon-image': 'artwork',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'community_centre'],
+        'icon-image': 'community_centre',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'library'],
+        'icon-image': 'library',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'museum'],
+        'icon-image': 'museum',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'theatre'],
+        'icon-image': 'theatre',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'cinema'],
+        'icon-image': 'cinema',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'nightclub'],
+        'icon-image': 'nightclub',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'arts_centre'],
+        'icon-image': 'arts_centre',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'gallery'],
+        'icon-image': 'art',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'internet_cafe'],
+        'icon-image': 'internet_cafe',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'casino'],
+        'icon-image': 'casino',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'public_bookcase'],
+        'icon-image': 'public_bookcase',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'amusement_arcade'],
+        'icon-image': 'amusement_arcade',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+
+    // Historical objects
+    {
+        'filter': ['==', ['get', 'historic'], 'memorial'],
+        'icon-image': 'memorial',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'historic'], 'archaeological_site'],
+        'icon-image': 'archaeological_site',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'historic'], 'wayside_shrine'],
+        'icon-image': 'wayside_shrine',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'historic'], 'monument'],
+        'icon-image': 'monument',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'historic'], 'castle'],
+        'icon-image': 'castle',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'historic'], 'memorial'],
+                ['==', ['get', 'memorial'], 'plaque']
+            ],
+            [
+                'all',
+                ['==', ['get', 'historic'], 'memorial'],
+                ['==', ['get', 'memorial'], 'blue_plaque']
+            ]
+        ],
+        'icon-image': 'plaque',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'historic'], 'memorial'],
+                ['==', ['get', 'memorial'], 'statue']
+            ],
+            [
+                'all',
+                ['==', ['get', 'tourism'], 'artwork'],
+                ['==', ['get', 'artwork_type'], 'statue']
+            ]
+        ],
+        'icon-image': 'statue',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'historic'], 'memorial'],
+            ['==', ['get', 'memorial'], 'stone']
+        ],
+        'icon-image': 'stone',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'historic'], 'castle'],
+                ['==', ['get', 'castle_type'], 'palace']
+            ],
+            [
+                'all',
+                ['==', ['get', 'historic'], 'castle'],
+                ['==', ['get', 'castle_type'], 'stately']
+            ]
+        ],
+        'icon-image': 'palace',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    // {
+    //     'filter': ['==', ['get', 'historic'], 'castle'], =>defensive / 
=>fortress / =>castrum / =>shiro / =>kremlin
+    //     'icon-image': 'fortress',
+    //     'icon-color': theme.historyIconColor,
+    //     'text-color': theme.historyIconColor
+    // },
+    {
+        'filter': ['==', ['get', 'historic'], 'fort'],
+        'icon-image': 'historic_fort',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'historic'], 'memorial'],
+                ['==', ['get', 'memorial'], 'bust']
+            ],
+            [
+                'all',
+                ['==', ['get', 'tourism'], 'artwork'],
+                ['==', ['get', 'artwork_type'], 'bust']
+            ]
+        ],
+        'icon-image': 'bust',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'historic'], 'city_gate'],
+        'icon-image': 'city_gate',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'historic'], 'manor'],
+            [
+                'all',
+                ['==', ['get', 'historic'], 'castle'],
+                ['==', ['get', 'castle_type'], 'manor']
+            ]
+        ],
+        'icon-image': 'manor',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'obelisk'],
+        'icon-image': 'obelisk',
+        'icon-color': theme.historyIconColor,
+        'text-color': theme.historyIconColor
+    },
+
+    // Leisure, recreation, and sport
+    {
+        'filter': ['==', ['get', 'leisure'], 'playground'],
+        'icon-image': 'playground',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'leisure'], 'fitness_centre'],
+            ['==', ['get', 'leisure'], 'fitness_station']
+        ],
+        'icon-image': 'fitness',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'golf_course'],
+        'icon-image': 'golf',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'leisure'], 'water_park'],
+            ['==', ['get', 'leisure'], 'swimming_area'],
+            [
+                'all',
+                ['==', ['get', 'leisure'], 'sports_centre'],
+                ['==', ['get', 'sport'], 'swimming']
+            ]
+        ],
+        'icon-image': 'water_park',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'massage'],
+        'icon-image': 'massage',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'sauna'],
+        'icon-image': 'sauna',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'public_bath'],
+        'icon-image': 'public_bath',
+        'icon-color': theme.pointIconPublicBathIconColor,
+        'text-color': theme.pointIconPublicBathTextColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'miniature_golf'],
+        'icon-image': 'miniature_golf',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'beach_resort'],
+        'icon-image': 'beach_resort',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'fishing'],
+        'icon-image': 'fishing',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'bowling_alley'],
+        'icon-image': 'bowling_alley',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'dog_park'],
+        'icon-image': 'dog_park',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'golf'], 'pin'],
+        'icon-image': 'leisure_golf_pin',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+
+    // Waste management
+    {
+        'filter': ['==', ['get', 'amenity'], 'toilets'],
+        'icon-image': 'toilets',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'recycling'],
+        'icon-image': 'recycling',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'waste_basket'],
+        'icon-image': 'waste_basket',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'waste_disposal'],
+        'icon-image': 'waste_disposal',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'vending_machine'],
+            ['==', ['get', 'vending'], 'excrement_bags']
+        ],
+        'icon-image': 'excrement_bags',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+
+    // Outdoor
+    {
+        'filter': ['==', ['get', 'amenity'], 'bench'],
+        'icon-image': 'bench',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'shelter'],
+        'icon-image': 'shelter',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'drinking_water'],
+        'icon-image': 'drinking_water',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'picnic_site'],
+        'icon-image': 'picnic',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'fountain'],
+        'icon-image': 'fountain',
+        'icon-color': theme.waterIconColor,
+        'text-color': theme.waterIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'camp_site'],
+        'icon-image': 'camping',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'picnic_table'],
+        'icon-image': 'picnic',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'caravan_site'],
+        'icon-image': 'caravan_park',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bbq'],
+        'icon-image': 'bbq',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'shower'],
+        'icon-image': 'shower',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'firepit'],
+        'icon-image': 'firepit',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'bird_hide'],
+        'icon-image': 'bird_hide',
+        'icon-color': theme.leisureIconColor,
+        'text-color': theme.leisureIconColor,
+    },
+
+    // Tourism and accommodation
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'tourism'], 'information'],
+            ['==', ['get', 'information'], 'guidepost']
+        ],
+        'icon-image': 'guidepost',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'tourism'], 'information'],
+            ['==', ['get', 'information'], 'board']
+        ],
+        'icon-image': 'board',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'tourism'], 'information'],
+                ['==', ['get', 'information'], 'map']
+            ],
+            [
+                'all',
+                ['==', ['get', 'tourism'], 'information'],
+                ['==', ['get', 'information'], 'tactile_map']
+            ]
+        ],
+        'icon-image': 'map',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'tourism'], 'information'],
+            ['==', ['get', 'information'], 'office']
+        ],
+        'icon-image': 'office',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'tourism'], 'information'],
+            ['==', ['get', 'information'], 'terminal']
+        ],
+        'icon-image': 'terminal',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'tourism'], 'information'],
+            ['==', ['get', 'information'], 'audioguide']
+        ],
+        'icon-image': 'audioguide',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'viewpoint'],
+        'icon-image': 'viewpoint',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'hotel'],
+        'icon-image': 'hotel',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'guest_house'],
+        'icon-image': 'guest_house',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'hostel'],
+        'icon-image': 'hostel',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'chalet'],
+        'icon-image': 'chalet',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'motel'],
+        'icon-image': 'motel',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'apartment'],
+        'icon-image': 'apartment',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'alpine_hut'],
+        'icon-image': 'alpinehut',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'tourism'], 'wilderness_hut'],
+        'icon-image': 'wilderness_hut',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+
+    // Finance
+    {
+        'filter': ['==', ['get', 'amenity'], 'bank'],
+        'icon-image': 'bank',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'atm'],
+        'icon-image': 'atm',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bureau_de_change'],
+        'icon-image': 'bureau_de_change',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+
+    // Healthcare
+    {
+        'filter': ['==', ['get', 'amenity'], 'pharmacy'],
+        'icon-image': 'pharmacy',
+        'icon-color': theme.healthIconColor,
+        'text-color': theme.healthIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'hospital'],
+        'icon-image': 'hospital',
+        'icon-color': theme.healthIconColor,
+        'text-color': theme.healthIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'amenity'], 'clinic'],
+            ['==', ['get', 'amenity'], 'doctors']
+        ],
+        'icon-image': 'doctors',
+        'icon-color': theme.healthIconColor,
+        'text-color': theme.healthIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'dentist'],
+        'icon-image': 'dentist',
+        'icon-color': theme.healthIconColor,
+        'text-color': theme.healthIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'veterinary'],
+        'icon-image': 'veterinary',
+        'icon-color': theme.healthIconColor,
+        'text-color': theme.healthIconColor
+    },
+
+    // Communication
+    {
+        'filter': ['==', ['get', 'amenity'], 'post_box'],
+        'icon-image': 'post_box',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'post_office'],
+        'icon-image': 'post_office',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    // {
+    //     'filter': ['==', ['get', 'amenity'], 'parcel_locker'],
+    //     'icon-image': 'parcel_locker',
+    //     'icon-color': theme.amenityIconColor,
+    //     'text-color': theme.amenityIconColor
+    // },
+    {
+        'filter': ['==', ['get', 'amenity'], 'telephone'],
+        'icon-image': 'telephone',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'emergency'], 'phone'],
+        'icon-image': 'emergency_phone',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+
+    // Transportation
+    {
+        'filter': ['==', ['get', 'amenity'], 'parking'],
+        'icon-image': 'parking',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['all',
+                ['==', ['get', 'amenity'], 'parking'],
+                ['==', ['get', 'parking'], 'lane'],
+            ],
+            ['all',
+                ['==', ['get', 'amenity'], 'parking'],
+                ['==', ['get', 'parking'], 'street_side']
+            ]
+        ],
+        'icon-image': 'parking_subtle',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'highway'], 'bus_stop'],
+        'icon-image': 'bus_stop',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'fuel'],
+        'icon-image': 'fuel',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bicycle_parking'],
+        'icon-image': 'bicycle_parking',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'railway'], 'station'],
+            ['==', ['get', 'railway'], 'halt'],
+            ['==', ['get', 'railway'], 'tram_stop']
+        ],
+        'icon-image': 'place-6',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bus_station'],
+        'icon-image': 'bus_station',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'aeroway'], 'helipad'],
+        'icon-image': 'helipad',
+        'icon-color': theme.transportDefaultIconColor,
+        'text-color': theme.transportDefaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'aeroway'], 'aerodrome'],
+        'icon-image': 'aerodrome',
+        'icon-color': theme.transportDefaultIconColor,
+        'text-color': theme.transportDefaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bicycle_rental'],
+        'icon-image': 'rental_bicycle',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'leisure'], 'slipway'],
+        'icon-image': 'slipway',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'taxi'],
+        'icon-image': 'taxi',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'vending_machine'],
+            ['==', ['get', 'vending'], 'parking_tickets']
+        ],
+        'icon-image': 'parking_tickets',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'subway_entrance'],
+        'icon-image': 'entrance',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'charging_station'],
+        'icon-image': 'charging_station',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'highway'], 'elevator'],
+        'icon-image': 'elevator',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'car_rental'],
+        'icon-image': 'rental_car',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'parking_entrance'],
+            ['==', ['get', 'parking'], 'underground']
+        ],
+        'icon-image': 'parking_entrance_underground',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'vending_machine'],
+            ['==', ['get', 'vending'], 'public_transport_tickets']
+        ],
+        'icon-image': 'public_transport_tickets',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'ferry_terminal'],
+        'icon-image': 'ferry',
+        'icon-color': theme.transportDefaultIconColor,
+        'text-color': theme.transportDefaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'motorcycle_parking'],
+        'icon-image': 'motorcycle_parking',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'bicycle_repair_station'],
+        'icon-image': 'bicycle_repair_station',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'boat_rental'],
+        'icon-image': 'boat_rental',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'parking_entrance'],
+            ['==', ['get', 'parking'], 'multi-storey']
+        ],
+        'icon-image': 'parking_entrance_multistorey',
+        'icon-color': theme.transportationIconColor,
+        'text-color': theme.transportationIconColor
+    },
+
+    // Road features
+    // {
+    //     'filter': ['==', ['get', 'oneway'], 'yes'],
+    //     'icon-image': 'oneway',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor
+    // },
+    {
+        'filter': ['==', ['get', 'barrier'], 'gate'],
+        'icon-image': 'gate',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'highway'], 'traffic_signals'],
+        'icon-image': 'traffic_light',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    // {
+    //     'filter': [
+    //         'any',
+    //         ['==', ['get', 'railway'], 'level_crossing'],
+    //         ['==', ['get', 'railway'], 'crossing']
+    //     ],
+    //     'icon-image': 'level_crossing2',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor
+    // },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'railway'], 'level_crossing'],
+            ['==', ['get', 'railway'], 'crossing']
+        ],
+        'icon-image': 'level_crossing',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'barrier'], 'bollard'],
+            ['==', ['get', 'barrier'], 'block'],
+            ['==', ['get', 'barrier'], 'turnstile'],
+            ['==', ['get', 'barrier'], 'log']
+        ],
+        'icon-image': 'gate',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'barrier'], 'lift_gate'],
+            ['==', ['get', 'barrier'], 'swing_gate']
+        ],
+        'icon-image': 'lift_gate',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'cycle_barrier'],
+        'icon-image': 'cycle_barrier',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'stile'],
+        'icon-image': 'stile',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    // {
+    //     'filter': ['==', ['get', 'highway'], 'mini_roundabout'],
+    //     'icon-image': 'highway_mini_roundabout',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor
+    // },
+    {
+        'filter': ['==', ['get', 'barrier'], 'toll_booth'],
+        'icon-image': 'toll_booth',
+        'icon-color': theme.accommodationIconColor,
+        'text-color': theme.accommodationIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'cattle_grid'],
+        'icon-image': 'barrier_cattle_grid',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'kissing_gate'],
+        'icon-image': 'kissing_gate',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'full-height_turnstile'],
+        'icon-image': 'full-height_turnstile',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'barrier'], 'motorcycle_barrier'],
+        'icon-image': 'motorcycle_barrier',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'ford'], 'yes'],
+            ['==', ['get', 'ford'], 'stepping_stones']
+        ],
+        'icon-image': 'ford',
+        'icon-color': theme.waterIconColor,
+        'text-color': theme.waterwayTextColor
+    },
+    // {
+    //     'filter': ['==', ['get', 'mountain_pass'], 'yes'],
+    //     'icon-image': 'mountain_pass',
+    //     'icon-color': theme.transportationIconColor,
+    //     'text-color': theme.transportationIconColor
+    // },
+    {
+        'filter': ['==', ['get', 'waterway'], 'dam'],
+        'icon-image': 'place-6',
+        'icon-color': theme.waterIconColor,
+        'text-color': theme.waterTextColor
+    },
+    {
+        'filter': ['==', ['get', 'waterway'], 'weir'],
+        'icon-image': 'place-6',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'waterway'], 'lock_gate'],
+        'icon-image': 'place-6',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    // {
+    //     'filter': ['==', ['get', 'Node with highway'], 'turning_circle at 
way with highway'],
+    //     'icon-image': 'turning_circle_on_highway_track',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor
+    // },
+
+    // Nature
+    {
+        'filter': ['==', ['get', 'natural'], 'peak'],
+        'icon-image': 'peak',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'natural'], 'spring'],
+        'icon-image': 'spring',
+        'icon-color': theme.waterIconColor,
+        'text-color': theme.waterIconColor
+    },
+    {
+        'filter': ['==', ['get', 'natural'], 'cave_entrance'],
+        'icon-image': 'cave',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'waterway'], 'waterfall'],
+        'icon-image': 'waterfall',
+        'icon-color': theme.waterIconColor,
+        'text-color': theme.waterIconColor
+    },
+    {
+        'filter': ['==', ['get', 'natural'], 'saddle'],
+        'icon-image': 'saddle',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': ['==', ['get', 'natural'], 'volcano'],
+        'icon-image': 'peak',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+
+    // Administrative facilities
+    {
+        'filter': ['==', ['get', 'amenity'], 'police'],
+        'icon-image': 'police',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'townhall'],
+        'icon-image': 'town_hall',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'fire_station'],
+        'icon-image': 'firestation',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'social_facility'],
+        'icon-image': 'social_facility',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'courthouse'],
+        'icon-image': 'courthouse',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'office'], 'diplomatic'],
+            ['==', ['get', 'diplomatic'], 'embassy']
+        ],
+        'icon-image': 'diplomatic',
+        'icon-color': theme.officeIconColor,
+        'text-color': theme.officeIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'office'], 'diplomatic'],
+            ['==', ['get', 'diplomatic'], 'consulate']
+        ],
+        'icon-image': 'consulate',
+        'icon-color': theme.officeIconColor,
+        'text-color': theme.officeIconColor
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'prison'],
+        'icon-image': 'prison',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor
+    },
+
+    // Religious place
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'christian']
+        ],
+        'icon-image': 'christian',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'jewish']
+        ],
+        'icon-image': 'jewish',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'muslim']
+        ],
+        'icon-image': 'muslim',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'taoist']
+        ],
+        'icon-image': 'taoist',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'hindu']
+        ],
+        'icon-image': 'hinduist',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'buddhist']
+        ],
+        'icon-image': 'buddhist',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'shinto']
+        ],
+        'icon-image': 'shintoist',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'amenity'], 'place_of_worship'],
+            ['==', ['get', 'religion'], 'sikh']
+        ],
+        'icon-image': 'sikhist',
+        'icon-color': theme.religionIconColor,
+        'text-color': theme.religionIconColor
+    },
+    // {
+    //     'filter': [
+    //         'all',
+    //         ['==', ['get', 'amenity'], 'place_of_worship'],
+    //         ['==', ['get', 'without or other religion'], '* value']
+    //     ],
+    //     'icon-image': 'place_of_worship',
+    //     'icon-color': theme.religionIconColor,
+    //     'text-color': theme.religionIconColor
+    // },
+
+    // Shop and services
+    {
+        'filter': ['==', ['get', 'amenity'], 'marketplace'],
+        'icon-image': 'marketplace',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'convenience'],
+        'icon-image': 'convenience',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'supermarket'],
+        'icon-image': 'supermarket',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'clothes'],
+            ['==', ['get', 'shop'], 'fashion']
+        ],
+        'icon-image': 'clothes',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'hairdresser'],
+        'icon-image': 'hairdresser',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'bakery'],
+        'icon-image': 'bakery',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'car_repair'],
+        'icon-image': 'car_repair',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['any',
+            ['==', ['get', 'shop'], 'doityourself'],
+            ['==', ['get', 'shop'], 'hardware']
+        ],
+        'icon-image': 'diy',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'car'],
+        'icon-image': 'car',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['any',
+            ['==', ['get', 'shop'], 'kiosk'],
+            ['==', ['get', 'shop'], 'newsagent']
+        ],
+        'icon-image': 'newsagent',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'beauty'],
+        'icon-image': 'beauty',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'car_wash'],
+        'icon-image': 'car_wash',
+        'icon-color': theme.amenityIconColor,
+        'text-color': theme.amenityIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'butcher'],
+        'icon-image': 'butcher',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['any',
+            ['==', ['get', 'shop'], 'alcohol'],
+            ['==', ['get', 'shop'], 'wine']
+        ],
+        'icon-image': 'alcohol',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'furniture'],
+        'icon-image': 'furniture',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'florist'],
+        'icon-image': 'florist',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'mobile_phone'],
+        'icon-image': 'mobile_phone',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'electronics'],
+        'icon-image': 'electronics',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'shoes'],
+        'icon-image': 'shoes',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'car_parts'],
+        'icon-image': 'car_parts',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'greengrocer'],
+            ['==', ['get', 'shop'], 'farm']
+        ],
+        'icon-image': 'greengrocer',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'laundry'],
+            ['==', ['get', 'shop'], 'dry_cleaning']
+        ],
+        'icon-image': 'laundry',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'optician'],
+        'icon-image': 'optician',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'jewelry'],
+            ['==', ['get', 'shop'], 'jewellery']
+        ],
+        'icon-image': 'jewelry',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'books'],
+        'icon-image': 'library',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'gift'],
+        'icon-image': 'gift',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'department_store'],
+        'icon-image': 'department_store',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'bicycle'],
+        'icon-image': 'bicycle',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'confectionery'],
+            ['==', ['get', 'shop'], 'chocolate'],
+            ['==', ['get', 'shop'], 'pastry']
+        ],
+        'icon-image': 'confectionery',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'variety_store'],
+        'icon-image': 'variety_store',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'travel_agency'],
+        'icon-image': 'travel_agency',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'sports'],
+        'icon-image': 'sports',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'chemist'],
+        'icon-image': 'chemist',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'computer'],
+        'icon-image': 'computer',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'stationery'],
+        'icon-image': 'stationery',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'pet'],
+        'icon-image': 'pet',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'beverages'],
+        'icon-image': 'beverages',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'cosmetics'],
+            ['==', ['get', 'shop'], 'perfumery']
+        ],
+        'icon-image': 'perfumery',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'tyres'],
+        'icon-image': 'tyres',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'motorcycle'],
+        'icon-image': 'motorcycle',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'garden_centre'],
+        'icon-image': 'garden_centre',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'copyshop'],
+        'icon-image': 'copyshop',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'toys'],
+        'icon-image': 'toys',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'deli'],
+        'icon-image': 'deli',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'tobacco'],
+        'icon-image': 'tobacco',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'seafood'],
+        'icon-image': 'seafood',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'interior_decoration'],
+        'icon-image': 'interior_decoration',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'ticket'],
+        'icon-image': 'ticket',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'photo'],
+            ['==', ['get', 'shop'], 'photo_studio'],
+            ['==', ['get', 'shop'], 'photography']
+        ],
+        'icon-image': 'photo',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'shop'], 'trade'],
+            ['==', ['get', 'shop'], 'wholesale']
+        ],
+        'icon-image': 'trade',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'outdoor'],
+        'icon-image': 'outdoor',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'houseware'],
+        'icon-image': 'houseware',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'art'],
+        'icon-image': 'art',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'paint'],
+        'icon-image': 'paint',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'fabric'],
+        'icon-image': 'fabric',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'bookmaker'],
+        'icon-image': 'bookmaker',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'second_hand'],
+        'icon-image': 'second_hand',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'charity'],
+        'icon-image': 'charity',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'bed'],
+        'icon-image': 'bed',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'medical_supply'],
+        'icon-image': 'medical_supply',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'hifi'],
+        'icon-image': 'hifi',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'music'],
+        'icon-image': 'music',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'coffee'],
+        'icon-image': 'coffee',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'musical_instrument'],
+        'icon-image': 'musical_instrument',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'tea'],
+        'icon-image': 'tea',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'video'],
+        'icon-image': 'video',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'bag'],
+        'icon-image': 'bag',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'carpet'],
+        'icon-image': 'carpet',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'video_games'],
+        'icon-image': 'video_games',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'vehicle_inspection'],
+        'icon-image': 'vehicle_inspection',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'shop'], 'dairy'],
+        'icon-image': 'dairy',
+        'icon-color': theme.shopIconColor,
+        'text-color': theme.shopIconColor,
+    },
+    // {
+    //     'filter': ['!=', ['get', 'shop'], 'yes'],
+    //     'icon-image': 'place-4',
+    // 'icon-color': theme.shopIconColor,
+    // 'text-color': theme.shopIconColor,
+    // },
+    {
+        'filter': ['==', ['get', 'office'], '*'],
+        'icon-image': 'office',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+    {
+        'filter': [
+            'any',
+            ['==', ['get', 'amenity'], 'nursing_home'],
+            ['==', ['get', 'amenity'], 'childcare']
+        ],
+        'icon-image': 'place-6',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor
+    },
+
+    // Landmarks, man-made infrastructure, masts and towers
+    {
+        'filter': ['any', ['==', ['get', 'man_made'], 'storage_tank'], ['==', 
['get', 'man_made'], 'silo']],
+        'icon-image': 'storage_tank',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'tower'],
+        'icon-image': 'tower_generic',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['all', ['==', ['get', 'man_made'], 'tower'], ['==', ['get', 
'tower:type'], 'communication']],
+        'icon-image': 'tower_cantilever_communication',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'power'], 'generator'],
+            ['any',
+                ['==', ['get', 'generator:source'], 'wind'],
+                ['==', ['get', 'generator:method'], 'wind_turbine)']
+            ]
+        ],
+        'icon-image': 'generator_wind',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'amenity'], 'hunting_stand'],
+        'icon-image': 'hunting_stand',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['any', ['==', ['get', 'historic'], 'wayside_cross'], ['==', 
['get', 'man_made'], 'cross']],
+        'icon-image': 'christian',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'water_tower'],
+        'icon-image': 'water_tower',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'mast'],
+        'icon-image': 'mast',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        filter: ['==', ['get', 'military'], 'bunker'],
+        'icon-image': 'bunker',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'chimney'],
+        'icon-image': 'chimney',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'any',
+            [
+                'all',
+                ['==', ['get', 'man_made'], 'tower'],
+                ['==', ['get', 'tower:type'], 'observation']
+            ],
+            [
+                'all',
+                ['==', ['get', 'man_made'], 'tower'],
+                ['==', ['get', 'tower:type'], 'watchtower']
+            ]
+        ],
+        'icon-image': 'tower_observation',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'bell_tower']
+        ],
+        'icon-image': 'tower_bell_tower',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'lighting']
+        ],
+        'icon-image': 'tower_lighting',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'lighthouse'],
+        'icon-image': 'lighthouse',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'advertising'], 'column'],
+        'icon-image': 'column',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'crane'],
+        'icon-image': 'crane',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'windmill'],
+        'icon-image': 'windmill',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'communication'],
+            ['==', ['get', 'tower:construction'], 'lattice']
+        ],
+        'icon-image': 'tower_lattice_communication',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'mast'],
+            ['==', ['get', 'tower:type'], 'lighting']
+        ],
+        'icon-image': 'mast_lighting',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'mast'],
+            ['==', ['get', 'tower:type'], 'communication']
+        ],
+        'icon-image': 'mast_communications',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': ['==', ['get', 'man_made'], 'communications_tower'],
+        'icon-image': 'communication_tower',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'defensive']
+        ],
+        'icon-image': 'tower_defensive',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'cooling']
+        ],
+        'icon-image': 'tower_cooling',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:construction'], 'lattice']
+        ],
+        'icon-image': 'tower_lattice',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:type'], 'lighting'],
+            ['==', ['get', 'tower:construction'], 'lattice']
+        ],
+        'icon-image': 'tower_lattice_lighting',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:construction'], 'dish']
+        ],
+        'icon-image': 'tower_dish',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'tower'],
+            ['==', ['get', 'tower:construction'], 'dome']
+        ],
+        'icon-image': 'tower_dome',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'telescope'],
+            ['==', ['get', 'telescope:type'], 'radio']
+        ],
+        'icon-image': 'telescope_dish',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'man_made'], 'telescope'],
+            ['==', ['get', 'telescope:type'], 'optical']
+        ],
+        'icon-image': 'telescope_dome',
+        'icon-color': theme.manMadeIconColor,
+        'text-color': theme.manMadeIconColor,
+    },
+
+    // Electricity
+    // {
+    //     'filter': ['==', ['get', 'power'], 'tower'],
+    //     'icon-image': 'power_tower',
+    //     'icon-color': theme.powerIconColor,
+    //     'text-color': theme.powerIconColor,
+    // },
+    // {
+    //     'filter': ['==', ['get', 'power'], 'pole'],
+    //     'icon-image': 'place-6',
+    //     'icon-color': theme.powerIconColor,
+    //     'text-color': theme.powerIconColor,
+    // },
+
+    // Places
+    {
+        'filter': ['==', ['get', 'place'], 'city'],
+        'icon-image': 'place-6',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor,
+    },
+    // {
+    //     'filter': ['has', 'capital'],
+    //     'icon-image': 'place_capital',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor,
+    // },
+    // {
+    //     'filter': ['==', ['get', 'entrance'], 'yes'],
+    //     'icon-image': 'entrance',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor,
+    // },
+    // {
+    //     'filter': ['==', ['get', 'entrance'], 'main'],
+    //     'icon-image': 'entrance',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor,
+    // },
+    // {
+    //     'filter': ['==', ['get', 'entrance'], 'service'],
+    //     'icon-image': 'entrance',
+    //     'icon-color': theme.defaultIconColor,
+    //     'text-color': theme.defaultIconColor,
+    // },
+    {
+        'filter': [
+            'all',
+            ['has', 'entrance'],
+            ['==', ['get', 'access'], 'no']
+        ],
+        'icon-image': 'entrance',
+        'icon-color': theme.defaultIconColor,
+        'text-color': theme.defaultIconColor,
+    },
+];
+
+export default asLayerObject(withSortKeys(directives), {
+    id: 'icon',
+    type: 'symbol',
+    source: 'baremaps',
+    'source-layer': 'point',
+    'minzoom': 14,
+    layout: {
+        visibility: 'visible',
+        'icon-size': 1,
+        'icon-anchor': 'bottom',
+        'text-font': ['Noto Sans Regular'],
+        'text-size': 11,
+        'text-field': ['get', 'name'],
+        'text-anchor': 'top',
+        'text-optional': true,
+        'text-max-width': 5,
+    },
+    paint: {
+        'icon-opacity': 1,
+        'icon-translate-anchor': 'map',
+        'icon-halo-color': theme.pointIconLayerIconHaloColor,
+        'icon-halo-width': 1,
+        'text-halo-width': 1,
+        'text-halo-color': theme.pointIconLayerTextHaloColor,
+    },
+});
\ No newline at end of file
diff --git a/basemap/layers/amenity/overlay.js 
b/basemap/layers/amenity/overlay.js
index bce5e23f..699960b5 100644
--- a/basemap/layers/amenity/overlay.js
+++ b/basemap/layers/amenity/overlay.js
@@ -18,15 +18,16 @@ import {asLayerObject, withSortKeys} from 
"../../utils/utils.js";
 import theme from "../../theme.js";
 
 let directives = [
-    {
-        filter: ['==', ['get', 'amenity'], 'motorcycle_parking'],
-        'fill-color': theme.amenityMotorcycleParkingOverlayFillColor,
-    },
     {
         filter: [
             'all',
             ['!=', ['get', 'layer'], '-1'],
-            ['==', ['get', 'amenity'], 'parking']
+            ['any',
+                ['==', ['get', 'amenity'], 'bicycle_parking'],
+                ['==', ['get', 'amenity'], 'motorcycle_parking'],
+                ['==', ['get', 'amenity'], 'parking_space'],
+                ['==', ['get', 'amenity'], 'parking'],
+            ],
         ],
         'fill-color': theme.amenityParkingOverlayFillColor,
         'fill-outline-color': theme.amenityParkingOverlayOutlineColor
@@ -42,7 +43,7 @@ export default asLayerObject(withSortKeys(directives), {
         visibility: 'visible',
     },
     paint: {
-        'fill-antialias': false,
+        'fill-antialias': true,
     },
     filter: ['==', ["geometry-type"], 'Polygon'],
 });
diff --git a/basemap/layers/barrier/line.js b/basemap/layers/barrier/line.js
index b46ef88c..6e862853 100644
--- a/basemap/layers/barrier/line.js
+++ b/basemap/layers/barrier/line.js
@@ -23,6 +23,22 @@ let directives = [
         'line-color': theme.barrierHedgeLineColor,
         'line-width-stops': theme.barrierHedgeLineWidth,
     },
+    {
+        filter: ['==', ['get', 'barrier'], 'wall'],
+        'line-color': theme.barrierWallLineColor,
+        'line-width-stops': theme.barrierWallLineWidth,
+    },
+    {
+        filter: ['==', ['get', 'barrier'], 'wall'],
+        'line-color': theme.barrierFenceLineColor,
+        'line-width-stops': theme.barrierFenceLineWidth,
+    },
+    {
+        filter: ['==', ['get', 'barrier'], 'city_wall'],
+        'line-color': theme.barrierCityWallLineColor,
+        'line-width-stops': theme.barrierCityWallLineWidth,
+    },
+
 ];
 
 export default asLayerObject(withSortKeys(directives), {
diff --git a/basemap/layers/natural/overlay.js 
b/basemap/layers/natural/overlay.js
index ea29dabc..fce9384f 100644
--- a/basemap/layers/natural/overlay.js
+++ b/basemap/layers/natural/overlay.js
@@ -18,10 +18,6 @@ import {asLayerObject, withSortKeys} from 
"../../utils/utils.js";
 import theme from "../../theme.js";
 
 let directives = [
-    {
-        filter: ['==', ['get', 'natural'], 'wetland'],
-        'fill-color': theme.naturalWetlandOverlayFillColor
-    },
     {
         filter: [
             'all',
@@ -46,6 +42,10 @@ let directives = [
         ],
         'fill-color': theme.naturalLakeOverlayFillColor
     },
+    {
+        filter: ['==', ['get', 'natural'], 'wetland'],
+        'fill-color': theme.naturalWetlandOverlayFillColor
+    },
 ];
 
 export default asLayerObject(withSortKeys(directives), {
diff --git a/basemap/layers/railway/line.js b/basemap/layers/railway/line.js
index b078cb08..fb91bb35 100644
--- a/basemap/layers/railway/line.js
+++ b/basemap/layers/railway/line.js
@@ -36,6 +36,15 @@ export let directives = [
         'line-color': theme.railwayAllRailsLineColor,
         'line-width-stops': theme.railwayServiceLineWidth,
     },
+
+    {
+        'filter': ['all',
+            ['==', ['get', 'railway'], 'turntable'],
+            ['has', 'service']
+        ],
+        'line-color': theme.railwayAllRailsLineColor,
+        'line-width-stops': theme.railwayServiceLineWidth,
+    },
     {
         'filter': ['==', ['get', 'railway'], 'subway'],
         'line-color': theme.railwaySubwayLineColor,
diff --git a/basemap/layers/railway/tunnel.js b/basemap/layers/railway/tunnel.js
index b63e0add..1bf02bff 100644
--- a/basemap/layers/railway/tunnel.js
+++ b/basemap/layers/railway/tunnel.js
@@ -15,9 +15,91 @@
  limitations under the License.
  **/
 import {asLayerObject, withSortKeys} from "../../utils/utils.js";
+import theme from "../../theme.js";
 
 
-import {directives} from './line.js'
+export let directives = [
+    {
+        'filter': [
+            'all',
+            ['==', ['get', 'railway'], 'rail'],
+            ['!', ['has', 'service']],
+        ],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayRailLineWidth,
+    },
+    {
+        'filter': ['all',
+            ['==', ['get', 'railway'], 'rail'],
+            ['has', 'service']
+        ],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayServiceLineWidth,
+    },
+    {
+        'filter': ['all',
+            ['==', ['get', 'railway'], 'turntable'],
+            ['has', 'service']
+        ],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayServiceLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'subway'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwaySubwayLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'tram'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayTramLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'preserved'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayPreservedLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'funicular'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayFunicularLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'monorail'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayMonorailLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'light_rail'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayLightRailLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'construction'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayConstructionLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'abandoned'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayAbandonedLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'disused'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayDisusedLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'miniature'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayMiniatureLineWidth,
+    },
+    {
+        'filter': ['==', ['get', 'railway'], 'narrow_gauge'],
+        'line-color': theme.railwayTunnelColor,
+        'line-width-stops': theme.railwayNarrowGaugeLineWidth,
+    },
+];
 
 export default asLayerObject(withSortKeys(directives), {
     'id': 'railway_tunnel',
@@ -29,9 +111,6 @@ export default asLayerObject(withSortKeys(directives), {
         'line-cap': 'round',
         'line-join': 'round',
     },
-    'paint': {
-        'line-dasharray': [1, 2]
-    },
     'filter': ['all',
         ['==', ['geometry-type'], 'LineString'],
         ['==', ['get', 'tunnel'], 'yes'],
diff --git a/basemap/style.js b/basemap/style.js
index 923bb435..0073b976 100644
--- a/basemap/style.js
+++ b/basemap/style.js
@@ -101,9 +101,9 @@ export default {
         man_made_line,
         man_made_label,
         amenity_fountain,
+        railway_tunnel,
         highway_tunnel_outline,
         highway_tunnel_line,
-        railway_tunnel,
         building_fill,
         highway_construction_line,
         highway_outline,
diff --git a/basemap/themes/default.js b/basemap/themes/default.js
index 898698da..833451b9 100644
--- a/basemap/themes/default.js
+++ b/basemap/themes/default.js
@@ -48,6 +48,7 @@ export default {
     amenityIconColor: 'rgb(115, 74, 7)',
     amenityKinderGartenFillColor: 'rgb(255, 255, 228)',
     amenityMotorcycleParkingOverlayFillColor: 'rgb(238, 238, 238)',
+    amenityMotorcycleParkingOverlayOutlineColor: 'rgb(205, 203, 199)',
     amenityParkingEntranceIconColor: 'rgba(0, 146, 218, 1)',
     amenityParkingEntranceIconHaloColor: 'rgba(255, 255, 255, 0.8)',
     amenityParkingEntranceTextColor: 'rgba(0, 146, 218, 1)',
@@ -77,9 +78,15 @@ export default {
     attractionWaterSlideLineColor: 'rgb(126,204,173)',
     attractionWaterSlideLineWidth: [5, 0.5, 16, 1],
     backgroundColor: 'rgb(242, 239, 233)',
+    barrierCityWallLineColor: 'rgb(157,157,157)',
+    barrierCityWallLineWidth: [5, 0.5, 16, 2],
+    barrierFenceLineColor: 'rgb(157,157,157)',
+    barrierFenceLineWidth: [5, 0.5, 16, 0.1],
     barrierGuardRailBackgroundLineColor: 'rgba(139, 177, 162, 1)',
     barrierHedgeLineColor: 'rgb(173, 209, 158)',
     barrierHedgeLineWidth: [5, 0.5, 16, 1],
+    barrierWallLineColor: 'rgb(157,157,157)',
+    barrierWallLineWidth: [5, 0.5, 16, 0.2],
     boundaryAdminLevelLineColor: 'rgb(207, 155, 203)',
     buildingCemeteryTextColor: 'rgba(69, 95, 72, 1)',
     buildingCemeteryTextHaloColor: 'rgba(255, 255, 255, 0.8)',
@@ -370,6 +377,7 @@ export default {
     railwaySubwayLineWidth: [5, 0.5, 16, 3],
     railwayTramLineColor: 'rgb(77,77,77)',
     railwayTramLineWidth: [5, 0.5, 16, 3],
+    railwayTunnelColor: 'rgb(201,201,201)',
     religionIconColor: 'rgb(0, 0, 0)',
     routeFerryLineColor: 'rgb(112, 181, 201)',
     shopIconColor: 'rgb(172, 57, 172)',

Reply via email to