1 # Walkabout is an outdoor style perfect for hiking or getting out and about, with
2 # mountains, ski trails, biking paths, and transit stops.
4 # Give OpenStreetMap data a professional basemap skin using the Tangram graphics library
5 # and Mapzen's versatile Vector Tiles.
7 # Please use and adapt the open source scene file in your own projects!
9 # Authors: Geraldine Sarmiento, Nathaniel V. Kelso
10 # Read more: https://github.com/tangrams/walkabout-style
14 # Sign up for a Mapzen API key to enjoy higher rate limits
15 # https://mapzen.com/documentation/overview/#developer-accounts-and-api-keys
16 sdk_mapzen_api_key: '' # set this value to your Mapzen API key
19 ux_language: false # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
20 ux_language_fallback: false # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
21 ux_language_text_source: |
23 // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
24 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
26 ux_language_text_source_boundary_lines: |
28 var right = (global.ux_language && feature['name:right:'+global.ux_language]) || (global.ux_language_fallback && feature['name:right:'+global.ux_language_fallback]) || feature['name:right'];
29 var left = (global.ux_language && feature['name:left:'+global.ux_language]) || (global.ux_language_fallback && feature['name:left:'+global.ux_language_fallback]) || feature['name:left'];
31 //if( right.includes(' ') || left.includes(' ') ) {
32 return left + " - " + right;
34 // return right + '\n' + left;
37 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
40 ux_language_text_source_short: |
42 return (global.ux_language && feature['name:short:'+global.ux_language]) || (global.ux_language_fallback && feature['name:short:'+global.ux_language_fallback]) || feature['name:short'];
44 ux_language_text_source_short_proxy_name: |
46 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
47 var short = (global.ux_language && feature['name:short:'+global.ux_language]) || (global.ux_language_fallback && feature['name:short:'+global.ux_language_fallback]) || feature['name:short'];
48 return short ? name : '';
50 ux_language_text_source_abbreviation: |
52 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
53 var abbrev = (global.ux_language && feature['name:abbreviation:'+global.ux_language]) || (global.ux_language_fallback && feature['name:abbreviation:'+global.ux_language_fallback]) || feature['name:abbreviation'];
54 return abbrev || name;
56 ux_language_text_source_iata: |
58 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
61 return name + ' (' + feature.iata + ')';
70 ux_language_text_source_ocean: |
72 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
73 name = name.split(' ').join('\n');
74 return name.split('').join(' ');
76 ux_language_text_source_sea: |
78 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
79 name = name.split(' ').join('\n');
80 return name.split('').join(' ');
82 ux_language_text_source_continent_stacked_only: |
84 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
85 return name.split(' ').join('\n');
87 ux_language_text_source_continent: |
89 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
90 name = name.split(' ').join('\n');
91 return name.split('').join(' ');
93 ux_language_text_source_road_ref_and_name: |
95 // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
96 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
99 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
100 if(feature.ref && name) {
101 return (feature.ref + ' ' + name);
107 ux_language_text_source_road_ref_and_name_short: |
109 // if a ux_langauge has been defined use that, else if there is feature name in the fallback_ux_language then use that, else use the feature's default name in the local language
110 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
113 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
114 if (feature.ref && (feature.ref.length < 6) && name) {
115 return feature.ref + ' ' + name;
121 ux_language_text_source_piste_advanced: |
123 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
124 return name ? ('◆ ' + name) : '◆';
126 ux_language_text_source_piste_expert: |
128 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
129 return name ? ('◆◆ ' + name) : '◆◆';
131 ux_language_text_source_building_and_address: |
133 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
134 if (name && feature.addr_housenumber) {
135 return name + '\n' + feature.addr_housenumber;
141 # To facilitate data visualizations several recommended sort orders are provided
143 # Your classic raster map overlay.
144 # Over all line and polygon features.
145 # Under map labels (icons and text), under UI elements
146 # (like routeline and search result pins).
147 sdk_order_over_everything_but_text_0: 490
148 sdk_order_over_everything_but_text_1: 491
149 sdk_order_over_everything_but_text_2: 492
150 sdk_order_over_everything_but_text_3: 493
151 sdk_order_over_everything_but_text_4: 494
152 sdk_order_over_everything_but_text_5: 495
153 sdk_order_over_everything_but_text_6: 496
154 sdk_order_over_everything_but_text_7: 497
155 sdk_order_over_everything_but_text_8: 498
156 sdk_order_over_everything_but_text_9: 499
158 # Your classic "underlay"
159 # Under roads. Above borders, water, landuse, and earth.
160 sdk_order_under_roads_0: 290
161 sdk_order_under_roads_1: 291
162 sdk_order_under_roads_2: 292
163 sdk_order_under_roads_3: 293
164 sdk_order_under_roads_4: 294
165 sdk_order_under_roads_5: 295
166 sdk_order_under_roads_6: 296
167 sdk_order_under_roads_7: 297
168 sdk_order_under_roads_8: 298
169 sdk_order_under_roads_9: 299
172 # Above earth and most landuse.
173 sdk_order_under_water_0: 190
174 sdk_order_under_water_1: 191
175 sdk_order_under_water_2: 192
176 sdk_order_under_water_3: 193
177 sdk_order_under_water_4: 194
178 sdk_order_under_water_5: 195
179 sdk_order_under_water_6: 196
180 sdk_order_under_water_7: 197
181 sdk_order_under_water_8: 198
182 sdk_order_under_water_9: 199
185 # Tip: disable earth layer.
186 sdk_order_under_everything_0: 0
187 sdk_order_under_everything_1: 1
188 sdk_order_under_everything_2: 2
189 sdk_order_under_everything_3: 3
190 sdk_order_under_everything_4: 4
191 sdk_order_under_everything_5: 5
192 sdk_order_under_everything_6: 6
193 sdk_order_under_everything_7: 7
194 sdk_order_under_everything_8: 8
195 sdk_order_under_everything_9: 9
198 # should default to "auto", with SDK overriding it to true or false,
199 # or app logic sets other booleans that triggers auto behavior later
200 sdk_transit_overlay: false
203 sdk_shield_color: black
204 sdk_shield_text_color: white
206 # enable interactivity for key features
209 # default order for basemap features
210 feature_order: function() { return feature.sort_rank; }
211 sdk_building_extrude: true # building extrusion toggle
214 text_visible_continent: true
215 text_visible_island: true
216 text_visible_admin: true
217 text_visible_populated_places: true
218 icon_visible_populated_places: true
219 text_visible_neighbourhoods: true
220 text_visible_neighbourhoods_e: true
221 text_visible_building: true # false for default
222 text_visible_address: true # false for default
223 text_visible_water_labels: true
224 label_visible_landuse_green: true #this needs work
225 icon_visible_landuse_green: true #this needs work
226 icon_size_green: [[13, '14px'], [16, '18px'], [18, '19px']] # 0px for no, default, more [[13, '14px'], [16, '18px'], [18, '19px']]
227 icon_size_green_l: [[14, '24px'], [16, '32px']] # 0px for no, default, more [[14, '24px'], [16, '32px']]
228 text_visible_landuse_green: true
229 label_visible_poi_landuse: true
230 icon_visible_poi_landuse: true #false for default
231 text_visible_poi_landuse: true #false for default
232 label_visible_poi_landuse_e: true
233 icon_visible_poi_landuse_e: true #false for default
234 text_visible_poi_landuse_e: true
235 text_visible_landuse_generic: true
236 label_visible_station: true #false for default
237 icon_visible_station: true #false for default
238 text_visible_station: true #false for default
239 text_visible_highway: true
240 text_visible_highway_e: true #false for default
241 text_visible_trunk_primary: true
242 text_visible_trunk_primary_e2: true #false for default
243 text_visible_trunk_primary_e: true #false for default
244 text_visible_secondary: true
245 text_visible_secondary_e: true #false for default
246 text_visible_tertiary: true
247 text_visible_tertiary_e: true #false for default
248 text_visible_minor_road: true
249 text_visible_minor_road_e: true
250 text_visible_service_road: true
251 text_visible_path: true
252 text_visible_piste: true
253 text_visible_steps: true
254 text_visible_aerialway: true
255 sdk_road_shields: true
256 text_visible_exits: true
257 text_visible_exits_e: true #false for default
258 text_visible_airport_gate: true
261 camera_settings: { type: isometric, axis: [-.2, .2] }
264 light_settings: { type: directional, direction: [1, 1, -.9], diffuse: 0.5, ambient: 0.85 }
267 highway1: [1.00,1.00,1.00]
268 highway_link1: [0.00, 0.00, 0.00]
269 highway_casing1: [0.894,0.906,0.914]
270 highway_tunnel1: [0.930,0.930,0.930]
271 highway_tunnel_casing1: [0.894,0.906,0.914]
272 highway_link_tunnel_casing1: [0.350,0.350,0.350]
273 ferry1: [0.410,0.750,0.833]
276 rail2: '#777' # less important rail (service, sidings)
277 major_road1: [1.0, 1.0, 1.0]
278 major_road1b: [0.935, 0.935, 0.935]
279 major_road1c: white #15%
280 major_road2: [0.935, 0.935, 0.935]
281 major_road2a: [0.935, 0.935, 0.935]
282 major_road2b: [0.935, 0.935, 0.935]
283 major_road3: [0.935, 0.935, 0.935]
284 major_road4: [0.00, 0.00, 0.00]
286 major_casing1: [0.40, 0.40, 0.40] # same as highway_casing1
287 major_casing2: [0.40, 0.40, 0.40] # zoomed out
288 major_tunnel1: [0.930,0.930,0.930]
289 major_tunnel_casing1: [0.695,0.739,0.790]
290 major_route1: [0.0, 0.0, 0.0]
291 major_route2: [0.2, 0.2, 0.2] # zoomed out
292 minor_route: [0.97, 0.97, 0.97] # same as major_route
293 minor_road1: [0.935, 0.935, 0.935] # natural earth
294 minor_road2: [1.00,1.00,1.00] # natural earth, same as major_road2
295 minor_road3: [0.935, 0.935, 0.935]
296 minor_road4: [0.935, 0.935, 0.935] # zoomed out
297 minor_road5: [0.935, 0.935, 0.935] # zoomed out, again
298 minor_casing1: white # same as highway_casing1
299 minor_casing2: white # zoomed out
300 minor_tunnel1: [0.929,0.929,0.929]
301 minor_tunnel_casing1: [1.00, 1.00, 1.00]
302 service_road1: [0.935, 0.935, 0.935]
304 service_road_casing1: [0.40, 0.40, 0.40]
305 service_road_casing2: white
306 path1: [0.97, 0.97, 0.97]
307 path2: [0.97, 0.97, 0.97] # zoomed out
308 path_casing1: [0.40, 0.40, 0.40]
309 path_bridge_casing1: [0.40, 0.40, 0.40]
310 path_bridge_casing2: [0.40, 0.40, 0.40] # zoomed out
312 path_steps1_b: '#ccc'
313 piste_easy: [0.367,0.750,0.622]
314 piste_intermediate: [0.420,0.678,0.863]
315 piste_advanced: [0.450,0.450,0.450]
316 piste_expert: [0.450,0.450,0.450]
319 country_boundary: [1.00,1.00,1.00]
320 region_boundary: [1.00,1.00,1.00]
321 subregion_boundary: [1.00,1.00,1.00]
322 city_wall: [0.682,0.682,0.682]
323 retaining_wall: [0.827,0.808,0.780]
324 snow_fence: [0.827,0.808,0.780]
325 fence: [0.827,0.808,0.780]
326 dam: [0.827,0.808,0.780]
329 scene1: white # map background
330 water1: [0.870, 0.870, 0.870] # water wave
331 water2: [0.760, 0.760, 0.760] # water wave
332 water3: [0.5, 0.5, 0.5] # playa texture
333 water1_o: '#fff' # water stroke (ocean coastline)
334 water2_o: '#d1d1d1' # water stroke 2 (streams, lake outlines)
335 earth1: white # land color
336 earth2: '#e9e4e0' # urban
337 earth2_v: false # urban
338 green1: [0.50,0.50,0.50] # park
339 green1_r: '#bbbbbb' # park roads
340 green1_b: [.65, .65, .65] # park buildings
341 green1_bo: [.8, .8, .8] # park building outlines
342 green2: [0.90,0.90,0.90] # cemetery
343 green3: '#9a9a9a' # golf course
344 green4: [0.90,0.90,0.90] # farm faint
345 green4_v: false # farm faint
346 green5: [0.75,0.75,0.75] # farm
347 green6: [0.40,0.40,0.40] # nature reserve
348 green7: [0.85,0.85,0.85] # forest
349 green8: [0.80,0.80,0.80] # conservation
350 green9: [0.85,0.85,0.85] # forest (landcover)
351 green9_e: [0.90,0.90,0.90] # forest (landcover) early
352 green9_v: true # forest (landcover) visibility
353 green10: [0.85,0.85,0.85] # sports_centre
354 green11: [0.85,0.85,0.85] # minor zoo related AOIs
355 green11_o: [0.85,0.85,0.85] # minor zoo related AOIs outline
356 orange1: '#aaaaaa' # stadium
357 orange2: [0.40,0.40,0.40] # pitch (play field)
358 brown1: '#7b7b7b' # university
359 brown1_r: '#bbbbbb' # university roads
360 brown1_b: [.65, .65, .65] # university buildings
361 brown1_bo: [.8, .8, .8] # university building outlines
362 brown2: '#aaaaaa' # school
363 brown3: [0.40,0.40,0.40] # playground
364 red1: '#a2a2a2' # hospital
365 red1_r: '#bbbbbb' # hospital roads
366 red1_b: [.65, .65, .65] # hospital buildings
367 red1_bo: [.8, .8, .8] # hospital building outlines
368 gray-all: [0.935,0.960,0.970] # default gray for landuse outdoor style
369 grey1: '#cccccc' # pedestrian, retail, airport apron, parking, church
370 grey1_e: '#dad6d4' # pedestrian, retail, airport apron, parking, church early zoom 14
371 grey1_v: true # pedestrian, retail, airport apron, parking, church
372 grey2: [0.5, 0.5, 0.5] # airport runway
373 grey3: '#bbbbbb' # railway
374 grey4: '#ffc52a' # airport taxiway
375 grey5: '#ffc52a' # airport taxiway
376 grey6: '#dddddd' # industrial
377 grey6_b: [.65, .65, .65] # industrial buildings
378 grey6_bo: [.8, .8, .8] # industrial building outlines
379 grey7: '#ecebe9' # pedestrian, match minor road / path color
380 grey7_v: true # pedestrian visibility
381 grey8: '#ecebe9' # winter sports
382 grey8_v: true # winter sports visibility
383 grey9: [.7, .0, .0, 0.5] #[.7, .7, .7] # transit platform
384 grey9_o: [.5, .5, .5] # transit platform outline
385 grey9_v: true # transit platform visibility
386 grey10: '#d4cce6' # generic major landuse (theme park, resort, aquarium, winery)
387 grey10_o: '#bcb9c5' # generic major landuse outline
388 grey11: '#d7d7d7' # generic minor landuse (attraction, artwork)
389 grey11_o: '#cccccc' # generic minor landuse outline
390 grey12: '#cfcfcf' # generic minor amusements (roller coasters, rides, slide, carousel)
391 grey12_o: '#c5c5c5' # generic minor amusements
392 purple: '#f0e1e1' # airport
393 purple_v: true # airport
394 mystry1: '#aaaaaa' # recreation ground (type of park, sometimes around reservoirs)
395 building1: white # building
396 building2: white # building stroke
397 building_o: 25 # building stroke order
398 building_e: true # building stroke order
401 text_fill: '#000' # WHITE
402 text_fill2: '#000' # WHITE
403 text_fill_road_e: '#555' # WHITE
404 text_fill_exits: [0.40,0.40,0.40] # motorway junctions, highway_casing1
405 text_fill_building: '#000' # tan
406 text_fill_address: [0.60,0.60,0.60] # HUH
407 text_fill_water: [0.354,0.531,0.620] # blue
408 text_fill_park: [0.175,0.175,0.175] # green
409 text_fill_beach: [0.35,0.35,0.35] # black
410 text_fill_piste: [0.350,0.350,0.350] # dark gray
411 text_fill_piste_e: [0.350,0.350,0.350] # dark gray early
412 text_stroke: [0.913,0.925,0.933] # land color
413 text_stroke_park: [0.913,0.925,0.933] # land color
414 text_stroke_water: [0.913,0.925,0.933]
415 text_stroke_address: [0.913,0.925,0.933] # address stroke color
416 townspot_sprite: townspot-m-rev # depends on land color and text settings
417 text_font_family: 'Open Sans' # branding in asperational Unicode, yo (or Helvetica)
420 camera1: global.camera_settings
424 color: [0.894,0.902,0.898]
429 - weight: 300 # Light
430 url: fonts/OpenSans-Light.woff
431 - weight: normal # Regular
432 url: fonts/OpenSans-Regular.woff
433 - weight: normal # Regular
435 url: fonts/OpenSans-Italic.woff
436 - weight: 600 # Semi Bold
437 url: fonts/OpenSans-Semibold.woff
438 - weight: 600 # Semi Bold
440 url: fonts/OpenSans-SemiboldItalic.woff
442 url: fonts/OpenSans-Bold.woff
445 #url: https://fonts.gstatic.com/s/montserrat/v7/zhcz-_WihjSQC0oHJ9TCYL3hpw3pgy2gAi-Ip7WPMi0.woff
446 url: fonts/Montserrat-Regular.woff
450 url: images/walkabout@2x.png
451 #url: https://raw.githubusercontent.com/tangrams/walkabout-style/gh-pages/images/walkabout%402x.png
454 # define sprites: [x origin, y origin, width, height]
455 'US:CA-1char': [688, 786, 82, 92]
456 'US:CA-2char': [588, 786, 92, 92]
457 'US:CA-3char': [468, 786, 112, 92]
458 'US:CA-4char': [336, 786, 124, 92]
459 'US:CA-5char': [200, 786, 128, 92]
460 'US:I-1char': [514, 890, 90, 100]
461 'US:I-2char': [0, 502, 102, 102]
462 'US:I-3char': [856, 370, 134, 100]
463 'US:I-4char': [708, 370, 140, 100]
464 'US:I-5char': [548, 370, 152, 100]
465 'US:NY-1char': [656, 606, 72, 88]
466 'US:NY-2char': [0, 606, 88, 88]
467 'US:NY-3char': [880, 502, 104, 86]
468 'US:NY-4char': [756, 502, 116, 86]
469 'US:NY-5char': [628, 502, 120, 86]
470 'US:PA-1char': [576, 606, 72, 88]
471 'US:PA-2char': [480, 606, 88, 88]
472 'US:PA-3char': [360, 606, 112, 88]
473 'US:PA-4char': [232, 606, 120, 88]
474 'US:PA-5char': [96, 606, 128, 88]
475 'US:US-1char': [420, 890, 88, 94]
476 'US:US-2char': [308, 892, 106, 94]
477 'US:US-3char': [162, 890, 136, 100]
478 'US:US-4char': [0, 890, 156, 100]
479 'US:US-5char': [776, 786, 164, 100]
480 airport: [952, 0, 38, 38]
481 aerodrome: [952, 0, 38, 38]
482 allotments: [460, 252, 38, 38]
483 aquarium: [824, 168, 38, 38]
484 atm: [0, 168, 38, 38]
485 attraction: [458, 210, 38, 38]
486 bakery: [640, 168, 38, 38]
487 bank: [46, 168, 38, 38]
488 category-predicate-money: [46, 168, 38, 38]
489 bar: [322, 168, 38, 38]
490 pub: [322, 168, 38, 38]
491 category-predicate-drink: [322, 168, 38, 38]
492 baseball: [552, 84, 38, 38]
493 basketball: [506, 84, 38, 38]
494 battlefield: [732, 210, 38, 38]
495 bbq: [138, 252, 38, 38]
496 beach: [690, 84, 38, 38]
497 beach_resort: [640, 210, 38, 38]
498 bench: [630, 0, 38, 38]
499 bicycle: [964, 126, 38, 38]
500 bicycle_rental: [964, 126, 38, 38]
501 bicycle_rental_station: [964, 126, 38, 38]
502 bicycle_parking: [736, 126, 38, 38]
503 biergarten: [366, 210, 38, 38]
504 brewery: [366, 210, 38, 38]
505 boat_rental: [506, 252, 38, 38]
506 books: [918, 126, 38, 38]
507 bridge: [966, 84, 38, 38]
508 buddhist: [828, 84, 38, 38]
509 building: [506, 168, 38, 38]
510 hangar: [506, 168, 38, 38]
511 nursing_home: [506, 168, 38, 38]
512 manor: [506, 168, 38, 38]
513 apartments: [506, 168, 38, 38]
514 care_home: [506, 168, 38, 38]
515 bus_station: [860, 0, 38, 38]
516 bus_stop: [860, 0, 38, 38]
517 butcher: [0, 84, 38, 38]
518 cafe: [594, 168, 38, 38]
519 camp_site: [874, 84, 38, 38]
520 capital-l: [268, 294, 32, 32]
521 capital-m: [236, 294, 24, 24]
522 capital-s: [206, 294, 20, 20]
523 capital-xl: [356, 294, 40, 40]
524 capital-xs: [184, 294, 16, 16]
525 car: [872, 126, 38, 38]
526 category-namespace-mobility: [872, 126, 38, 38]
527 category-predicate-mobility: [872, 126, 38, 38]
528 car_repair: [92, 168, 38, 38]
529 car_sharing: [676, 0, 38, 38]
530 caravan_site: [870, 210, 38, 38]
531 castle: [460, 42, 38, 38]
532 fort: [460, 42, 38, 38]
533 cemetery: [782, 84, 38, 38]
534 grave_yard: [782, 84, 38, 38]
535 christian: [276, 126, 38, 38]
536 cinema: [870, 168, 38, 38]
537 clothes: [916, 168, 38, 38]
538 fashion: [916, 168, 38, 38]
539 college: [962, 168, 38, 38]
540 university: [962, 168, 38, 38]
541 confectionery: [90, 210, 38, 38]
542 convenience: [138, 84, 38, 38]
543 county_shield-1char: [736, 606, 72, 72]
544 county_shield-2char: [532, 502, 88, 72]
545 county_shield-3char: [420, 502, 104, 72]
546 county_shield-4char: [276, 502, 136, 72]
547 county_shield-5char: [108, 502, 160, 72]
548 courthouse: [446, 0, 38, 38]
549 dam: [966, 252, 38, 38]
550 dentist: [266, 0, 38, 38]
551 department_store: [826, 126, 38, 38]
552 doctors: [224, 0, 38, 38]
553 clinic: [224, 0, 38, 38]
554 dog_park: [46, 252, 38, 38]
555 dot-black: [92, 294, 38, 38]
556 dot-white: [920, 252, 38, 38]
557 drinking_water: [320, 210, 38, 38]
558 dry_cleaning: [92, 84, 38, 38]
559 electronics: [690, 126, 38, 38]
560 computer: [690, 126, 38, 38]
561 enclosure: [0, 294, 38, 38]
562 estate_agent: [184, 42, 38, 38]
563 factory: [460, 168, 38, 38]
564 industrial: [460, 168, 38, 38]
565 chimney: [460, 168, 38, 38]
566 substation: [460, 168, 38, 38]
567 wastewater_plant: [460, 168, 38, 38]
568 works: [460, 168, 38, 38]
569 water_works: [460, 168, 38, 38]
570 plant: [460, 168, 38, 38]
571 generator: [460, 168, 38, 38]
572 category-predicate-industry: [460, 168, 38, 38]
573 fast_food: [228, 210, 38, 38]
574 ferry: [906, 0, 38, 38]
575 ferry_terminal: [906, 0, 38, 38]
576 fire_station: [400, 0, 38, 38]
577 firepit: [0, 252, 38, 38]
578 fishing: [916, 210, 38, 38]
579 fishing_area: [916, 210, 38, 38]
580 fitness: [966, 42, 38, 38]
581 fitness_station: [966, 42, 38, 38]
582 florist: [230, 126, 38, 38]
583 forest: [136, 210, 38, 38]
584 natural_forest: [136, 210, 38, 38]
585 nature_reserve: [136, 210, 38, 38]
586 conservation: [136, 210, 38, 38]
587 protected_area: [136, 210, 38, 38]
588 grass: [136, 210, 38, 38]
589 fountain: [368, 126, 38, 38]
590 fuel: [44, 210, 38, 38]
591 gallery: [732, 168, 38, 38]
592 garden: [736, 84, 38, 38]
593 gas_canister: [644, 252, 38, 38]
594 gate: [46, 294, 38, 38]
595 generic: [138, 294, 38, 38]
596 category-namespace-other: [138, 294, 38, 38]
597 category-predicate-addressing: [138, 294, 38, 38]
598 generic_shield-1char: [404, 698, 72, 72]
599 generic_shield-2char: [300, 698, 98, 72]
600 generic_shield-3char: [160, 698, 132, 72]
601 generic_shield-4char: [0, 698, 152, 72]
602 generic_shield-5char: [816, 606, 180, 72]
603 geyser: [594, 210, 38, 38]
604 gift: [184, 126, 38, 38]
605 golf_course: [460, 84, 38, 38]
606 government: [230, 168, 38, 38]
607 townhall: [230, 168, 38, 38]
608 public: [230, 168, 38, 38]
609 embassy: [230, 168, 38, 38]
610 category-predicate-civic: [230, 168, 38, 38]
611 hairdresser: [92, 42, 38, 38]
612 hardware: [920, 42, 38, 38]
613 doityourself: [920, 42, 38, 38]
614 painter: [920, 42, 38, 38]
615 historical: [138, 126, 38, 38]
616 hospital: [182, 0, 38, 38]
617 category-namespace-health: [182, 0, 38, 38]
618 category-predicate-health: [182, 0, 38, 38]
619 hot_spring: [322, 84, 38, 38]
620 hotel: [814, 0, 38, 38]
621 motel: [814, 0, 38, 38]
622 hostel: [814, 0, 38, 38]
623 category-predicate-sleep: [814, 0, 38, 38]
624 hunting: [548, 210, 38, 38]
625 ice_cream: [412, 210, 38, 38]
626 information: [504, 210, 38, 38]
627 jewelry: [782, 42, 38, 38]
628 jewish: [44, 0, 38, 38]
629 landmark: [354, 0, 38, 38]
630 memorial: [354, 0, 38, 38]
631 monument: [354, 0, 38, 38]
632 tower: [354, 0, 38, 38]
633 beacon: [354, 0, 38, 38]
634 laundry: [736, 42, 38, 38]
635 library: [0, 0, 38, 38]
636 light_rail: [768, 0, 38, 38]
637 tram_stop: [768, 0, 38, 38]
638 lighthouse: [276, 84, 38, 38]
639 liquor: [598, 126, 38, 38]
640 alcohol: [598, 126, 38, 38]
641 mall: [690, 42, 38, 38]
642 marina: [184, 168, 38, 38]
643 dock: [184, 168, 38, 38]
644 mine: [828, 42, 38, 38]
645 mobile_phone: [552, 42, 38, 38]
646 motorcycle: [276, 252, 38, 38]
647 museum: [92, 126, 38, 38]
648 music: [414, 42, 38, 38]
649 muslim: [90, 0, 38, 38]
650 newspaper: [368, 42, 38, 38]
651 kiosk: [368, 42, 38, 38]
652 observatory: [598, 252, 38, 38]
653 office: [644, 84, 38, 38]
654 insurance: [644, 84, 38, 38]
655 company: [644, 84, 38, 38]
656 category-predicate-service: [644, 84, 38, 38]
657 optician: [322, 42, 38, 38]
658 outdoor: [736, 252, 38, 38]
659 park: [322, 126, 38, 38]
660 national_park: [322, 126, 38, 38]
661 protected_area: [322, 126, 38, 38]
662 category-predicate-nature: [322, 126, 38, 38]
663 parking: [782, 126, 38, 38]
664 peak: [230, 84, 38, 38]
665 pet: [276, 42, 38, 38]
666 pharmacy: [46, 84, 38, 38]
667 photographic_laboratory: [230, 42, 38, 38]
668 photographer: [230, 42, 38, 38]
669 picnic_site: [230, 252, 38, 38]
670 picnic_table: [230, 252, 38, 38]
671 pier: [722, 0, 38, 38]
672 place_of_worship: [368, 168, 38, 38]
673 chapel: [368, 168, 38, 38]
674 wayside_shrine: [368, 168, 38, 38]
675 category-predicate-religion: [368, 168, 38, 38]
676 playground: [506, 42, 38, 38]
677 police: [308, 0, 38, 38]
678 post_office: [414, 168, 38, 38]
679 quarry: [874, 42, 38, 38]
680 mineshaft: [874, 42, 38, 38]
681 adit: [874, 42, 38, 38]
682 ranger_station: [184, 252, 38, 38]
683 recreation_track: [368, 252, 38, 38]
684 recycling: [138, 42, 38, 38]
685 restaurant: [182, 210, 38, 38]
686 category-namespace-eat_and_drink: [182, 210, 38, 38]
687 category-predicate-eat: [182, 210, 38, 38]
688 retail: [644, 42, 38, 38]
689 store: [644, 42, 38, 38]
690 category-namespace-shop_and_service: [644, 42, 38, 38]
691 category-predicate-shop: [644, 42, 38, 38]
692 ruin: [584, 0, 38, 38]
693 ruins: [584, 0, 38, 38]
694 archaeological_site: [584, 0, 38, 38]
695 school: [598, 84, 38, 38]
696 kindergarten: [598, 84, 38, 38]
697 category-namespace-education_and_religion: [598, 84, 38, 38]
698 category-predicate-education: [598, 84, 38, 38]
699 scuba_diving: [690, 252, 38, 38]
700 dive_centre: [690, 252, 38, 38]
701 sdk_shield-1char: [484, 698, 84, 84]
702 sdk_shield-2char: [576, 698, 112, 84]
703 sdk_shield-3char: [696, 698, 144, 84]
704 sdk_shield-4char: [848, 698, 168, 84]
705 sdk_shield-5char: [0, 786, 192, 84]
706 shoemaker: [598, 42, 38, 38]
707 shower: [824, 210, 38, 38]
708 ski: [414, 126, 38, 38]
709 winter_sports: [414, 126, 38, 38]
710 ski_rental: [414, 126, 38, 38]
711 ski_school: [414, 126, 38, 38]
712 ski_jumping: [414, 126, 38, 38]
713 skiing: [414, 126, 38, 38]
714 slipway: [778, 210, 38, 38]
715 soccer: [414, 84, 38, 38]
716 sports: [276, 168, 38, 38]
717 pitch: [276, 168, 38, 38]
718 sports_centre: [276, 168, 38, 38]
719 recreation_ground: [276, 168, 38, 38]
720 spring: [368, 84, 38, 38]
721 stadium: [506, 126, 38, 38]
722 subway_entrance: [538, 0, 38, 38]
723 summer_camp: [414, 252, 38, 38]
724 supermarket: [644, 126, 38, 38]
725 greengrocer: [644, 126, 38, 38]
726 swimming_area: [962, 210, 38, 38]
727 swimming_pool: [552, 126, 38, 38]
728 tailor: [46, 42, 38, 38]
729 telescope: [552, 252, 38, 38]
730 tennis: [460, 126, 38, 38]
731 theatre: [686, 168, 38, 38]
732 category-predicate-fun: [686, 168, 38, 38]
733 theme_park: [46, 126, 38, 38]
734 amusement_ride: [46, 126, 38, 38]
735 toilets: [920, 84, 38, 38]
736 townspot-l: [656, 294, 32, 32]
737 townspot-l-rev: [484, 294, 32, 32]
738 townspot-m: [624, 294, 24, 24]
739 townspot-m-rev: [452, 294, 24, 24]
740 townspot-s: [596, 294, 20, 20]
741 townspot-s-rev: [424, 294, 20, 20]
742 townspot-xl: [696, 294, 40, 40]
743 townspot-xl-rev: [524, 294, 38, 38]
744 townspot-xs: [572, 294, 16, 16]
745 townspot-xs-rev: [404, 294, 12, 12]
746 toys: [0, 42, 38, 38]
747 traffic_signals: [0, 210, 38, 38]
748 trailhead: [782, 252, 38, 38]
749 train_station: [492, 0, 38, 38]
750 station: [492, 0, 38, 38]
751 category-predicate-transport: [492, 0, 38, 38]
752 tree: [828, 252, 38, 38]
753 tree-s: [874, 252, 38, 38]
754 ux-current-location: [294, 370, 88, 88]
755 ux-locate-off: [824, 294, 72, 72]
756 ux-locate-on: [744, 294, 72, 72]
757 ux-route-arrow: [0, 370, 128, 128]
758 ux-route-start: [214, 370, 72, 92]
759 ux-route-stop: [136, 370, 72, 92]
760 ux-search-active: [388, 370, 72, 108]
761 ux-search-inactive: [468, 370, 72, 108]
762 ux-transit-stop: [308, 296, 42, 36]
763 veterinary: [136, 0, 38, 38]
764 viewpoint: [778, 168, 38, 38]
765 category-namespace-do_and_see: [778, 168, 38, 38]
766 category-predicate-attraction: [778, 168, 38, 38]
767 vineyard: [138, 168, 38, 38]
768 volcano: [184, 84, 38, 38]
769 water_park: [686, 210, 38, 38]
770 water_slide: [686, 210, 38, 38]
771 water_tower: [322, 252, 38, 38]
772 waterfall: [92, 252, 38, 38]
773 wine: [274, 210, 38, 38]
774 winery: [548, 168, 38, 38]
775 zoo: [0, 126, 38, 38]
778 url: images/building-grid.gif
779 #url: https://raw.githubusercontent.com/tangrams/walkabout-style/gh-pages/images/building-grid.png
786 url: https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson
788 #url: https://tile.dev.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.topojson
790 api_key: global.sdk_mapzen_api_key
795 url: https://tile.mapzen.com/mapzen/terrain/v1/normal/{z}/{x}/{y}.png
797 api_key: global.sdk_mapzen_api_key
800 # # Only enable this for local debug, should not be enabled for prod (app inserts these at runtime)
801 # # These are all in San Francisco, California
803 # # Current location gem
804 # mz_current_location:
806 # url: https://gist.githubusercontent.com/anonymous/9e9588228b0a604264a2/raw/b28be49bea0b7feb859eb65b588c28e9fee5ae2c/map.geojson
811 # # url: https://gist.githubusercontent.com/anonymous/30c6c1a75c168d91d90c/raw/92bfe55e622766d250b1f2f5d17bdc7c26acb956/map.geojson
813 # url: https://gist.githubusercontent.com/anonymous/9a610ebda6fe4be7bccc/raw/8d217e43f2412d48d01534ba115f1e42dac72e68/map.geojson
814 # # Dashed route line
817 # url: https://gist.githubusercontent.com/anonymous/d73b851c64c3e5fbfc2754aa32f44c10/raw/938ae435776e176919c4797bed1465a92e403ef3/map.geojson
818 # # Transit route line
819 # mz_route_line_transit:
821 # url: https://gist.githubusercontent.com/anonymous/71ae88cbc6d62c4d141ecd6a61060050/raw/2254bbc18243f5dc609e663a580c9412a7447936/map.geojson
822 # # Pin at start of route
825 # url: https://gist.githubusercontent.com/anonymous/5262969cb7549ea69221/raw/be03f233fa323d9b5cf50ef1d8e89a1faa3750f1/map.geojson
826 # # Pin at end of route
827 # mz_route_destination:
829 # url: https://gist.githubusercontent.com/anonymous/dbae9635dfe46796490e/raw/df55c318635a7d91b309ed40754d4738a292fd38/map.geojson
830 # # Arrow for current route location
833 # url: https://gist.githubusercontent.com/anonymous/36613092be6e2aa004fd/raw/f753d13069425199e1dea1b449ef67d723f6510e/map.geojson
834 # # Dots for transit stops in route preview
835 # mz_route_transit_stop:
837 # url: https://gist.githubusercontent.com/anonymous/b9f16bca4a804f50faf71277d52ee4ab/raw/db13e4e765fa1ac8844b8ba02f4a0f66fe772907/map.geojson
838 # # Pins showing search result locations
841 # url: https://gist.githubusercontent.com/anonymous/57dc09eeb120919f76de/raw/43426217da3c2bae0522dc4257aaa61e4df3981e/map.geojson
842 # # Default point styling (SDK)
845 # url: https://gist.githubusercontent.com/anonymous/16324c771edfce45be0721390389b878/raw/7dbaebf17da7da8562e6c6f8768bc8cff83efa88/map.geojson
846 # # Default shield styling (SDK)
849 # url: https://gist.githubusercontent.com/nvkelso/3c08dba1eced4d01df98c1a9a7801162/raw/d83a5a396fc7b22309b8ca89336ad2dcfff6c452/map.geojson
850 # # Default line styling (SDK)
853 # url: https://gist.githubusercontent.com/anonymous/26f4e8b6b34b2617b5d5533d89decb39/raw/df8e180ab4f7f19448014dccc4a755f7cfa20003/map.geojson
854 # # Default polygon styling (SDK)
855 # mz_default_polygon:
857 # url: https://gist.githubusercontent.com/anonymous/88235c795bb44b8c45150bdd5561f947/raw/71d4fab97b6513833bf1a589167119e6169ef86d/map.geojson
872 vec2 st = fract(v_texcoord.xy);
874 color.a = 1.- step(dotSize, dot(st,st)*2.);
878 dash_background_color: [0.808,0.860,0.851]
882 dash_background_color: [0.867, 0.867, 0.867]
886 dash_background_color: [0.808,0.860,0.851]
890 #dash_background_color: red
897 # u_envmap: images/relief-shading-environment-map.jpg
898 u_envmap: images/draw-test10.jpg
899 # u_envmap: https://raw.githubusercontent.com/tangrams/walkabout-style/gh-pages/images/draw-test10.jpg
904 varying vec2 v_tex_coord;
905 #ifdef TANGRAM_VERTEX_SHADER
906 uniform vec3 u_raster_offsets[TANGRAM_NUM_RASTER_SOURCES];
908 // Simplified view-independent environment map
909 vec4 terrainEnvmap (in sampler2D _tex, in vec3 _normal) {
910 const vec3 eye = vec3(0.,0.,-1.);
911 vec3 r = reflect(eye, _normal);
913 float m = 2. * length(r);
914 vec2 uv = r.xy / m + .5;
915 return texture2D(_tex, uv);
917 const float e = 2.71828;
919 #ifdef TANGRAM_VERTEX_SHADER
920 v_tex_coord = modelPositionBaseZoom().xy * u_raster_offsets[0].z + u_raster_offsets[0].xy;
923 // scale up normals with a function
924 // https://www.desmos.com/calculator/bv4mzh8erz
925 //float scale = 10./(u_map_position.z-.7) + 1.8;
926 float scale1 = 20./(u_map_position.z) + 1.5;
928 vec3 tex_normal = normalize(texture2D(u_rasters[0], v_tex_coord).xyz * 2.0 - 1.0);
929 tex_normal.z /= scale1; // turn terrain exaggeration up/down
931 // fade out spheremap normals with a function
932 // https://www.desmos.com/calculator/ptgkzcnfyc
933 float m = 3.5 * (u_map_position.z - 0.8) * pow(e, u_map_position.z * -.29);
934 m = clamp(m, 0., 1.5);
935 color = terrainEnvmap(u_envmap, tex_normal);
939 color.rgb = ((color.rgb - 0.5) * max(contrast, 0.)) + 0.5;
941 float brightness = .5 - m * .5;
942 color.rgb += brightness;
944 color *= v_color; // apply layer color
953 vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
954 vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
955 vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
956 float d = q.x - min(q.w, q.y);
958 return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
962 vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
963 vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
964 return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
971 // scale buildings based on zoom
972 float zoom = u_map_position.z;
973 float min = .1; // minimum building scale
974 float midpoint = 16.; // middle of zoom range
975 float inspeed = .1; // number of zooms to scale buildings up
976 float outspeed = 2.; // number of zooms to scale buildings back down
979 if (zoom >= midpoint) {
980 e = (zoom - midpoint) / (outspeed * .2);
982 e = abs(zoom - midpoint) / inspeed;
984 position.z *= ((1. - min) / (1. + (exp(e)))) + min;
989 mix: [hsv, scale-buildings]
993 u_tex_grid: building-grid
995 WALL_TINT: vec3(0.950, 0.950, 0.950)
998 if (dot(vec3(0., 0., 1.), worldNormal()) < 1.0 - TANGRAM_EPSILON) {
1000 color.rgb = hsv2rgb(rgb2hsv(color.rgb) * WALL_TINT);
1001 color.rgb = mix(color.rgb, vec3(0.),
1002 texture2D(u_tex_grid, v_texcoord).a);
1007 mix: scale-buildings
1019 polygons_transparent:
1022 ux-route-line-overlay:
1026 ux-route-line-dash-overlay:
1031 ux-transit-line-overlay:
1035 ux-location-gem-overlay:
1038 interactive: global.interactive
1044 interactive: global.interactive
1050 interactive: global.interactive
1056 interactive: global.interactive
1063 sdk-polygon-overlay:
1069 # Map overlays for styling the server response (using special source layer names) for route line, current location, and search result pins
1071 data: { source: mz_route_line }
1073 ux-route-line-overlay:
1076 width: [[0,3.5px],[5,5px],[9,7px],[10,6px],[11,6px],[13,8px],[14,9px],[15,10px],[16,11px],[17,12px],[18,10px]]
1078 data: { source: mz_dash_line }
1080 ux-route-line-dash-overlay:
1083 width: [[2,2px],[5,2.5px],[11,3px],[16,7px],[17,9px]]
1084 mz_route_line_transit:
1085 data: { source: mz_route_line_transit }
1087 ux-transit-line-overlay:
1088 # each transit route segment could be a different "line" each with it's own color
1089 # but some transit lines don't define a color, in those cases default to blue
1090 # and since the color is coming from Transit.land they call it "color" instead of "colour"
1091 color: function() { return feature.color || '#06a6d4'; }
1093 width: [[0,3.5px],[5,5px],[9,7px],[10,6px],[11,6px],[13,8px],[14,9px],[15,10px],[16,11px],[17,12px],[18,10px]]
1096 mz_current_location_gem:
1097 data: { source: mz_current_location }
1099 ux-location-gem-overlay:
1100 sprite: ux-current-location
1103 transition: { show: { time: 0s }, hide: { time: 0s } }
1105 data: { source: mz_route_location }
1107 ux-location-gem-overlay:
1108 sprite: ux-route-arrow
1111 transition: { show: { time: 0s }, hide: { time: 0s } }
1113 data: { source: mz_route_start }
1116 interactive: global.interactive
1118 sprite: ux-route-start
1122 transition: { show: { time: 0s }, hide: { time: 0s } }
1123 mz_route_destination:
1124 data: { source: mz_route_destination }
1127 interactive: global.interactive
1129 sprite: ux-route-stop
1133 transition: { show: { time: 0s }, hide: { time: 0s } }
1134 mz_route_transit_stop:
1135 data: { source: mz_route_transit_stop }
1138 interactive: global.interactive
1139 sprite: ux-transit-stop
1142 transition: { show: { time: 0s }, hide: { time: 0s } }
1144 data: { source: mz_search_result }
1147 interactive: global.interactive
1148 sprite: ux-search-active
1152 transition: { show: { time: 0s }, hide: { time: 0s } }
1154 filter: { state: inactive }
1157 sprite: ux-search-inactive
1159 data: { source: mz_dropped_pin }
1162 interactive: global.interactive
1163 sprite: ux-search-active
1167 transition: { show: { time: 0s }, hide: { time: 0s } }
1169 # Used by the SDK to place point, line, and polygon overlays on the map
1171 data: { source: mz_default_point }
1174 interactive: global.interactive
1175 sprite: ux-search-active
1179 transition: { show: { time: 0s }, hide: { time: 0s } }
1181 data: { source: mz_default_shield }
1184 interactive: global.interactive
1187 if( feature.shield_text ) {
1188 return ('sdk_shield-' + feature.shield_text.length + 'char');
1190 return ('sdk_shield-' + feature.name.length + 'char');
1193 sprite_default: sdk_shield-1char
1194 color: global.sdk_shield_color
1196 transition: { show: { time: 0s }, hide: { time: 0s } }
1198 # offset: [0px, -1px]
1201 if( feature.shield_text ) {
1202 return feature.shield_text;
1204 return feature.name;
1210 fill: global.sdk_shield_text_color
1212 size: [[7,7px],[12,8px],[16,11px]]
1217 if( feature.shield_text ) {
1218 return (feature.shield_text.length === 1);
1220 return (feature.name.length === 1);
1225 size: [[6,[16px,16px]],[13,[18px,18px]],[16,[21px,21px]]]
1229 if( feature.shield_text ) {
1230 return (feature.shield_text.length === 2);
1232 return (feature.name.length === 2);
1237 size: [[6,[21px,16px]],[13,[24px,18px]],[16,[28px,21px]]]
1241 if( feature.shield_text ) {
1242 return (feature.shield_text.length === 3);
1244 return (feature.name.length === 3);
1249 size: [[6,[27px,16px]],[13,[31px,18px]],[16,[36px,21px]]]
1253 if( feature.shield_text ) {
1254 return (feature.shield_text.length === 4);
1256 return (feature.name.length === 4);
1261 size: [[6,[32px,16px]],[13,[36px,18px]],[16,[41px,21px]]]
1265 if( feature.shield_text ) {
1266 return (feature.shield_text.length === 5);
1268 return (feature.name.length === 5);
1273 size: [[6,[37px,16px]],[13,[41px,18px]],[16,[48px,21px]]]
1274 # this is kinda a hack
1278 if( feature.shield_text ) {
1279 return (feature.shield_text.length > 5);
1281 return (feature.name.length > 5);
1288 data: { source: mz_default_line }
1295 data: { source: mz_default_polygon }
1297 sdk-polygon-overlay:
1298 color: [0.02,0.65,0.82,0.5] #'#06b1e2'
1307 data: { source: mapzen}
1310 order: function() { return feature.sort_rank; }
1311 color: [1.0, 1.0, 1.0]
1314 data: { source: mapzen, layer: water }
1317 order: function() { return feature.sort_rank; }
1318 #color: [0.608,0.925,0.965]
1320 filter: { $zoom: { min: 12 } }
1323 order: function() { return feature.sort_rank + 1; }
1324 #color: [0.608,0.925,0.965]
1329 - kind: [ocean, lake, water, riverbank, reservoir, swimming_pool]
1330 # WARNING: any area filters here must match the area filters in the water_boundaries-not-ocean layer
1332 # limit show smaller landuse areas to higher zooms
1333 - { $zoom: { min: 0 }, area: { min: 40000000000 } }
1334 - { $zoom: { min: 2 }, area: { min: 20000000000 } }
1335 # some weird natural earth scale set transition
1336 - { $zoom: { min: 3 }, area: { min: 80000000000 } }
1337 - { $zoom: { min: 4 }, area: { min: 5000000000 } }
1338 - { $zoom: { min: 5 }, area: { min: 700000000 } }
1339 - { $zoom: { min: 6 }, area: { min: 500000000 } }
1340 - { $zoom: { min: 7 }, area: { min: 160000000 } }
1341 - { $zoom: { min: 8 }, area: { min: 40000000 } }
1342 - { $zoom: { min: 9 }, area: { min: 10000000 } }
1343 - { $zoom: { min: 10 }, area: { min: 8000000 } }
1344 - { $zoom: { min: 11 }, area: { min: 2000000 } }
1345 - { $zoom: { min: 12 }, area: { min: 200000 } }
1346 - { $zoom: { min: 13 }, area: { min: 100000 } }
1347 - { $zoom: { min: 14 }, area: { min: 2000 } }
1348 - { $zoom: { min: 15 } }
1351 # color: [0.608,0.925,0.965] ## original color
1352 # color: [0.528,0.902,0.960] ## more saturated
1353 color: [0.432,0.890,0.960] ## even more saturated
1355 filter: { kind: playa, $zoom: {min: 6} }
1358 order: function() { return feature.sort_rank; }
1361 polygons_transparent:
1362 color: [0.85,0.85,0.85, 0.5]
1364 filter: { not: { kind: [ocean, lake, water, reservoir, playa] }, $zoom: { min: 11 }, area: { min: 100 } }
1367 color: [0.432,0.890,0.960]
1369 filter: { kind: swimming_pool }
1372 color: [0.432,0.890,0.960]
1373 water-boundary-ocean-early:
1374 filter: { boundary: true, kind: ocean, $zoom: {min: 1, max: 17} }
1377 order: function() { return feature.sort_rank; }
1378 color: [0.431,0.806,0.914]
1381 water-boundary-ocean-late:
1382 filter: { boundary: true, kind: ocean, $zoom: {min: 17} }
1385 order: function() { return feature.sort_rank; }
1386 color: [0.431,0.806,0.914]
1389 water_boundaries-not-ocean:
1390 # filter: { boundary: true, not: { kind: [ocean,playa] }, $zoom: { min: 8 } }
1394 - not: { kind: [ocean,playa] }
1396 # WARNING: any area filters here must match the area filters in the lakes layer
1398 # limit show smaller landuse areas to higher zooms
1399 - { $zoom: { min: 1 }, area: { min: 40000000000 } }
1400 - { $zoom: { min: 2 }, area: { min: 20000000000 } }
1401 # some weird natural earth scale set transition
1402 - { $zoom: { min: 3 }, area: { min: 80000000000 } }
1403 - { $zoom: { min: 4 }, area: { min: 5000000000 } }
1404 - { $zoom: { min: 5 }, area: { min: 700000000 } }
1405 - { $zoom: { min: 6 }, area: { min: 500000000 } }
1406 - { $zoom: { min: 7 }, area: { min: 160000000 } }
1407 - { $zoom: { min: 8 }, area: { min: 40000000 } }
1408 - { $zoom: { min: 9 }, area: { min: 10000000 } }
1409 - { $zoom: { min: 10 }, area: { min: 8000000 } }
1410 - { $zoom: { min: 11 }, area: { min: 2000000 } }
1411 - { $zoom: { min: 12 }, area: { min: 200000 } }
1412 - { $zoom: { min: 13 }, area: { min: 100000 } }
1413 - { $zoom: { min: 14 }, area: { min: 2000 } }
1414 - { $zoom: { min: 15 } }
1417 order: function() { return feature.sort_rank; }
1418 # color: [0.625,0.806,0.822]
1419 color: [0.431,0.806,0.914]
1423 filter: { $zoom: { min: 14 } }
1427 swimming-pools-early:
1428 filter: { kind: swimming_pool, $zoom: { max: 19 } }
1433 # river boundaries like the thames in london, la seine in paris
1434 filter: { kind: riverbank }
1437 color: [0.431,0.806,0.914]
1440 #river center lines, not boundaries for polygons
1441 filter: { kind: [river,canal,stream,dam,ditch,drain], $zoom: { min: 11 }, not: { is_tunnel: true } }
1444 order: function() { return feature.sort_rank; }
1445 color: [[10,[0.472,0.834,0.890]],[14,[0.511,0.877,0.930]]]
1446 # color: [0.592,0.929,0.961]
1447 #color: [[11,[0.753,0.820,0.835]],[12,[0.710,0.800,0.824]],[13,[0.886,0.937,0.988]]]
1448 #width: [[14,2.5px],[15,4.0px],[17,8.0px],[18,10.0px]]
1449 width: [[10,0px],[11,0.75px],[12,1.0px],[13,1.25px],[14,2.25px],[15,3px],[16,4px],[17,5m]]
1452 #color: [[11,[0.671,0.788,0.812]],[13,[0.710,0.800,0.824]],[14,[0.635,0.812,0.843]]]
1453 width: [[9,0px],[11,0px],[12,0px],[13,0.5px],[14,0.75px],[15,0.75px],[16,0.75px],[17,1px]]
1455 filter: { $zoom: [11,12], not: { kind: river } }
1458 width: [[11,0px], [12,0.6px]]
1462 - intermittent: true
1468 order: function() { return feature.sort_rank; }
1469 color: [[10,[0.472,0.834,0.890]],[14,[0.511,0.877,0.930]]]
1470 width: [[10,0px],[11,0.5px],[12,1px],[13,2px],[14,3px],[15,4px],[16,5px]]
1473 data: { source: mapzen, layer: water }
1474 visible: global.text_visible_water_labels
1479 - kind: [river,canal,stream,dam,ditch,drain]
1480 - $zoom: { min: 11 }
1483 text_source: global.ux_language_text_source
1485 fill: global.text_fill_water
1486 family: global.text_font_family
1489 size: [[12,10px],[17,14px]]
1490 not-river-not-stream:
1491 filter: { kind: [canal,dam,ditch,drain], $zoom: { max: 14 } }
1496 filter: { kind: [stream], $zoom: { max: 14 } }
1502 data: { source: mapzen, layer: transit }
1503 filter: { not: { kind: [platform] }, $zoom: { min: 14 } }
1506 order: function() { return feature.sort_rank || 275; }
1508 filter: { kind: [railway,train] }
1511 color: [[14,[0.653,0.758,0.786]], [17,[0.670,0.777,0.807]]]
1512 width: [[14,0.4px],[15,0.75px],[16,1.1px],[18,2px],[19,1m]]
1514 filter: { kind: subway }
1517 color: [[14,[0.653,0.758,0.786]], [17,[0.670,0.777,0.807]]]
1518 width: [[14,0.4px],[15,0.75px],[16,1.3px],[17,1.5px],[18,2m]]
1520 filter: { kind: [light_rail,tram], $zoom: { min: 15 } }
1524 color: [[14,[0.653,0.758,0.786]], [17,[0.670,0.777,0.807]]]
1525 width: [[14,0px],[15,0.6px],[16,0.75px],[17,1.5px],[19,1m]]
1528 data: { source: mapzen, layer: roads }
1529 filter: { kind: rail, not: { railway: [subway,light_rail,tram] } }
1532 order: function() { return feature.sort_rank; }
1533 color: [0.588,0.671,0.698]
1534 width: [[12,0px],[13,0.25px],[14,0.4px],[15,0.75px],[16,0.75px],[18,1m]]
1536 filter: { service: true }
1539 color: [[14,[0.653,0.758,0.786]], [17,[0.670,0.777,0.807]]]
1540 width: [[14,0px],[15,0.3px],[16,0.5px],[18,0.75px],[19,0.5m]]
1542 #filter: { $zoom: {min: 12} }
1545 # let roads sort themselves past zoom 14
1546 order: function() { return feature.sort_rank; }
1547 # but give them all the same outline
1552 filter: { any: [is_bridge: true, is_tunnel: true] }
1556 # except bridges and tunnels, their outlines should also self-sort
1557 order: function() { return feature.sort_rank || 305; }
1560 data: { source: mapzen, layer: roads }
1561 filter: { not: { kind: rail } }
1566 order: function() { return feature.sort_rank; }
1567 # but give them all the same outline
1571 visible: false # labels are enabled by each layer below
1572 text_source: global.ux_language_text_source
1574 family: global.text_font_family
1576 fill: global.text_fill
1579 filter: { $zoom: { max: 14 } }
1583 order: function() { return feature.sort_rank; }
1585 filter: { any: [is_bridge: true, is_tunnel: true] }
1590 # except bridges and tunnels, their outlines should also self-sort
1591 order: function() { return feature.sort_rank; }
1593 # default outlines starting at zoom 16
1594 default-outline-width:
1595 filter: { $zoom: { min: 16 } }
1599 width: function () { return 3/16 * Math.log($zoom); }
1601 natural_earth_highways:
1602 filter: { source: 'naturalearthdata.com', $zoom: { max: 8 } }
1605 color: [[5, [0.50,0.50,0.50]], [6, [0.350,0.350,0.350]]]
1606 width: [[5, 0.5px], [8, 1.25px]]
1608 color: global.highway_casing1
1611 filter: { kind: major_road }
1614 color: [[5, [0.75,0.75,0.75]], [8, [0.40,0.40,0.40]]]
1615 width: [[5, 0.25px], [9, 0.75px]]
1617 width: [[8, 0.0px], [9, 0.0px], [11, .5px], [16, .75px]]
1619 filter: { kind: minor_road }
1622 color: global.minor_road1
1625 filter: { kind: ferry }
1628 color: global.ferry1
1633 filter: { kind: highway, $zoom: { min: 8 } }
1636 color: [[8, [0.457,0.438,0.457]], [10, [0.548,0.483,0.491]], [11, [1.00,1.00,1.00]]]
1637 width: [[8, 1.25px], [12, 1.5px], [14, 2.5px], [16, 5.5px], [17, 10px], [18, 10m]]
1639 color: [[8, [0.969,0.969,0.969]], [10, [0.969,0.969,0.969]], [11, [0.548,0.483,0.491]]]
1640 width: [[8, 1px], [10, 1px], [12, 1.5px], [14, 1.75px], [16, 2.5px], [18, 4px]]
1642 filter: { $zoom: { max: 15 } } # was max: 15 (11)
1646 order: function() { return feature.sort_rank; }
1648 filter: { is_link: true } # on- and off-ramps, etc
1651 color: [[11, [0.627,0.612,0.616]], [13, [0.627,0.612,0.616]], [14, [1.00,1.00,1.00]]]
1652 width: [[8, 0px], [11, 0.4px], [12, 0.6px], [14, 1.25px], [16, 3px], [18, 5m]]
1654 color: [[11, [0.969,0.969,0.969]], [13, [0.969,0.969,0.969]], [14, [0.548,0.483,0.491]]]
1655 width: [[8, 0px], [9, 0px], [13, 0px], [14, 0.6px], [16, 1.25px], [18, 2px]]
1657 filter: { $zoom: { max: 15 } }
1662 filter: { $zoom: { max: 14 } }
1667 filter: { is_tunnel: true, $zoom: { min: 13 } }
1670 color: [0.929,0.929,0.929]
1672 color: [0.695,0.739,0.790]
1674 filter: { is_tunnel: true, $zoom: { min: 13 } }
1677 color: [0.929,0.929,0.929]
1679 color: [0.695,0.739,0.790]
1681 filter: { is_bridge: true }
1693 visible: global.text_visible_highway
1695 fill: [0.408,0.427,0.459]
1697 size: [[13, 11px], [15, 12px], [17, 15px], [19, 16px]]
1698 stroke: { color: [[13, [0.898,0.906,0.910]], [16,[1.000,1.000,1.000]]], width: 4px }
1701 filter: { kind: major_road }
1705 color: [[8, [0.529,0.556,0.592]], [13, [0.529,0.556,0.592]], [15, [1.00,1.00,1.00]]]
1706 width: [[10, 0px], [13, 0.5px], [16, 2.5px], [18,3px]]
1708 filter: { kind_detail: [trunk, primary] }
1711 color: [[10, [0.603,0.620,0.642]], [11, [1.00,1.00,1.00]]]
1712 width: [[8, 0.5px], [10, 1px], [12, 1px], [14, 2.5px], [16, 4px], [17, 6px], [18, 9m]]
1714 color: [[8, [0.969,0.969,0.969]], [10, [0.969,0.969,0.969]], [11, [0.629,0.612,0.615]], [14, [0.714,0.694,0.706]]]
1715 width: [[8, 0.5px], [10, 1px], [14, 1px], [16, 2.25px], [17, 2px], [18, 4px]]
1717 filter: { $zoom: { max: 14 } }
1722 order: function() { return feature.sort_rank + 2; }
1724 filter: { kind: [primary] }
1728 order: function() { return feature.sort_rank + 1; }
1730 filter: { ref: true }
1733 color: [[8, [0.603,0.620,0.642]], [10, [0.603,0.620,0.642]], [11, [1.00,1.00,1.00]]]
1734 width: [[8, 1px], [12, 1px], [14, 2.5px], [16, 5px], [17, 8px], [18, 9m]]
1736 color: [[8, [0.969,0.969,0.969]], [10, [0.969,0.969,0.969]], [11, [0.629,0.612,0.615]], [14, [0.670,0.623,0.654]]]
1737 width: [[9, 1px], [10, 1px], [12, 1.25px], [16, 2.25px], [17, 4px]]
1739 filter: { $zoom: { max: 13 } }
1742 order: function() { return feature.sort_rank + 2; }
1746 filter: { $zoom: [13] }
1751 order: function() { return feature.sort_rank + 1; }
1753 filter: { is_tunnel: true, $zoom: { min: 13 } }
1756 color: [0.883,0.904,0.930]
1758 color: [0.640,0.703,0.780]
1759 labels-trunk_primary-route:
1760 filter: { $zoom: { min: 14 } }
1764 visible: global.text_visible_trunk_primary
1766 fill: [0.495,0.511,0.532]
1768 size: [[14, 11px],[15, 12px], [18, 16px]]
1769 stroke: { color: [[14, global.text_stroke], [15,[0.969,0.973,0.973]]], width: [[15, 3px], [16, 4px]] }
1771 filter: { $zoom: [14] }
1774 visible: global.text_visible_trunk_primary_e2
1776 weight: normal # or 500 or 400?
1777 labels-trunk_primary-z11-up:
1783 visible: global.text_visible_trunk_primary_e
1785 fill: [0.495,0.511,0.532]
1786 size: [[11, 9px], [12, 10px], [13, 11px], [14, 11px], [15, 12px], [16, 13px],[ 18, 13px],[19, 16px]]
1787 stroke: { color: [[11, global.text_stroke], [15, [0.969,0.973,0.973]]], width: [[11, 2px], [15, 4px], [16, 4px], [17, 6px]] }
1789 filter: { $zoom: [16] }
1792 visible: global.text_visible_trunk_primary
1796 filter: { is_link: true } # on- and off-ramps, etc
1799 color: [[11, [0.627,0.612,0.616]], [13, [0.627,0.612,0.616]], [14, [1.00,1.00,1.00]]]
1800 width: [[8, 0px], [11, 0.4px], [12, 0.6px], [14, 1.25px], [16, 3px], [18, 5m]]
1802 color: [[11, [0.969,0.969,0.969]], [13, [0.969,0.969,0.969]], [14, [0.670,0.623,0.654]]]
1803 width: [[8, 0px], [9, 0px], [13, 0px], [14, 0.6px], [16, 1.25px], [18, 2px]]
1805 filter: { $zoom: { max: 14 } }
1810 filter: { is_tunnel: true, $zoom: { min: 13 } }
1813 color: [0.883,0.904,0.930]
1815 color: [0.640,0.703,0.780]
1817 filter: { kind_detail: secondary }
1820 color: [1.00,1.00,1.00]
1821 width: [[10, 0px], [11, 0px], [12, 1px], [14, 2px], [16, 4px], [17, 6px], [18, 9m]]
1823 color: [[9, [0.906,0.906,0.906]], [10, [0.788,0.780,0.800]], [11, [0.787,0.763,0.767]], [14, [0.700,0.665,0.688]]]
1824 width: [[10, 0px], [11, 0.5px], [12, 1px], [14, 1px], [16, 2.25px], [18, 4px]]
1826 filter: { $zoom: { max: 14 } }
1831 order: 353 #function() { return feature.sort_rank + 2; }
1833 filter: { $zoom: [13] }
1837 order: function() { return feature.sort_rank + 1; }
1839 filter: { ref: true, $zoom: { min: 8 } }
1842 color: [[10, [0.584,0.604,0.624]], [11, [1.00, 1.00, 1.00]]]
1843 width: [[8, 0px], [10, 0.7px], [11, 1px], [12, 1px], [14, 2px], [16, 4px], [18, 9m]]
1845 color: [[9, [0.906,0.906,0.906]], [10, [0.906,0.906,0.906]], [11, [0.787,0.763,0.767]], [14, [0.700,0.665,0.688]]]
1846 width: [[9, 0.25px], [10, 0.75px], [11, 0.75px], [12, 1px], [14, 1px], [16, 2.25px], [18, 4px]]
1848 filter: { $zoom: { max: 14 } }
1851 order: function() { return feature.sort_rank + 2; }
1855 # filter: { $zoom: [13] }
1860 # order: function() { return feature.sort_rank + 1; }
1862 filter: { is_tunnel: true, $zoom: { min: 13 } }
1865 color: [0.929,0.929,0.929]
1867 color: [0.695,0.739,0.790]
1868 labels-secondary-routes-z13-up:
1869 filter: { $zoom: { min: 13 } }
1873 visible: global.text_visible_secondary_e
1875 fill: [0.536,0.556,0.581]
1876 size: [[13, 11px], [15, 11px], [16, 12px]]
1877 stroke: { color: [[13, global.text_stroke], [16, [0.969,0.973,0.973]]], width: 4px }
1879 filter: { $zoom: { min: 15 } }
1882 visible: global.text_visible_secondary
1891 visible: global.text_visible_secondary_e
1893 fill: [0.536,0.556,0.581]
1894 size: [[13, 9px], [14, 9px], [15, 10px], [16, 12px], [17, 13px]]
1895 stroke: { color: [[13, global.text_stroke], [15, [0.969,0.973,0.973]]], width: 4px }
1897 filter: { kind_detail: [tertiary, tertiary_link] }
1900 color: [1.00, 1.00, 1.00]
1901 width: [[11, 0px], [12, 0px], [13, 1px], [14, 2px], [16, 3.5px], [17, 6px], [18, 9m]]
1903 color: [[11, [0.847,0.822,0.826]], [12, [0.797,0.770,0.775]], [14, [0.714,0.694,0.706]]]
1904 width: [[10, 0px], [11, 0px], [12, 0.3px], [14, 1px], [16, 2px], [17, 2px], [18, 4px]]
1906 filter: { $zoom: { max: 14 } }
1911 order: function() { return feature.sort_rank + 3; }
1913 filter: { ref: true, $zoom: { min: 12 } }
1916 color: [1.00,1.00,1.00]
1917 width: [[11, 0px], [12, 1px], [14, 2px], [16, 3.5px], [17, 6px], [18, 9m]]
1919 color: [[11, [0.788,0.780,0.800]], [12, [0.797,0.770,0.775]]]
1920 width: [[11, 0.4px], [12, 1px], [14, 1px], [16, 2px], [17, 2px], [18, 4px]]
1922 filter: { $zoom: { max: 14 } }
1925 order: function() { return feature.sort_rank + 3; }
1929 filter: {is_tunnel: true, $zoom: { min: 13 } }
1932 color: [0.929,0.929,0.929]
1934 color: global.major_tunnel_casing1
1935 # this was needed in the past, but where is an example map location to debug now? hmm.
1937 # filter: { is_link: true } # on- and off-ramps, etc
1940 # color: [[14, [0.714,0.733,0.760]], [15, [0.578,0.608,0.650]], [16, [0.533,0.555,0.586]], [17, [1.00,1.00,1.00]]]
1941 # width: [[11, 0.0px], [12, 0.15px], [14, 0.15px], [15, 0.75px], [16, 1.25px], [17, 2px], [18, 2px], [19, 4px]]
1943 # color: [[11, [1.00,1.00,1.00]], [16, [1.00,1.00,1.00]], [17,[0.578,0.608,0.650]]]
1944 # width: [[11, 0px], [16, 0px], [17, 1px], [18, 1px]]
1951 visible: global.text_visible_tertiary
1953 fill: [0.536,0.556,0.581]
1954 size: [[13, 9px], [15, 10px], [16, 12px], [17, 13px]]
1955 stroke: { color: [[13, global.text_stroke], [15, [0.969,0.973,0.973]]], width: 4px }
1957 filter: { kind: minor_road, not: { kind_detail: service } }
1960 color: [1.00,1.00,1.00] #[[12, [0.850,0.850,0.850]], [13, [0.714,0.733,0.760]], [16, [1.00,1.00,1.00]]]
1961 width: [[11, 0px], [12, 0.5px], [13, 0.5px], [14, 1px], [16, 3px], [18, 9m]]
1963 color: [[12, [0.900,0.900,0.900]], [13, [0.774,0.797,0.823]], [14, [0.798,0.823,0.847]]]
1964 width: [[11, 0px], [12, 0px], [13, 0px], [14, 1px], [16, 1.5px], [17, 2px], [18, 3px]]
1966 filter: { $zoom: { max: 14 } }
1973 filter: { kind_detail: unclassified, motor_vehicle: no }
1978 # Is this junk code?
1980 filter: { $zoom: { min: 17 } }
1986 filter: { is_tunnel: true, $zoom: { min: 13 } }
1989 color: global.minor_tunnel1
1991 color: global.minor_tunnel_casing1
1993 filter: { is_bridge: true }
2005 visible: global.text_visible_minor_road_e
2007 fill: [[15, [0.536,0.556,0.581]], [17, [0.40,0.40,0.40]]]
2008 size: [[15, 9px], [16, 12px], [17, 12px], [18, 13px]]
2009 stroke: { color: [[15, global.text_stroke], [17,[0.969,0.973,0.973]]], width: 4px }
2011 filter: { kind_detail: residential, $zoom: { max: 15 } }
2018 filter: { kind: minor_road, kind_detail: service }
2021 color: [1.00,1.00,1.00]
2022 width: [[14, 1px], [16, 2px], [18, 4m]]
2024 color: [[12, [0.900,0.900,0.900]], [14, [0.791,0.816,0.840]]]
2025 width: [[13, 0px], [14, 0.5px], [16, 1px], [18, 2px]]
2027 filter: { $zoom: { max: 15 } }
2033 labels-service_road:
2039 visible: global.text_visible_service_road
2041 fill: [0.536,0.556,0.581]
2042 size: [[17, 12px], [18, 13px]]
2043 stroke: { color: [0.969,0.973,0.973], width: 4px }
2050 # United State looks great with shield_text alone, but...
2052 #shield_text: true # some roads don't have shield text, deal with that later
2054 # Europe doesn't have many network relations set, so we could look for either
2055 # shield_text or ref (with no shield_text) but...
2056 # that makes United States look a bit funky with `(xxx)` and generic shields
2057 # showing up in fields of custom state shields like US:CA and US:NY
2060 - shield_text: true # some roads don't have shield text, deal with that later
2062 - shield_text: false # some roads don't have shield text, deal with that later
2064 - kind_detail: [motorway, trunk, primary, secondary, tertiary]
2068 # you need to match any custom shield to the vector tile `network` values
2071 if( feature.shield_text ) {
2072 return ('generic_shield-' + feature.shield_text.length + 'char');
2074 return ('generic_shield-' + feature.ref.length + 'char');
2077 sprite_default: generic_shield_5char
2079 repeat_group: shields
2080 repeat_distance: [[8,90px],[10,40px],[13,30px]]
2082 placement_min_length_ratio:
2090 cull_from_tile: true
2093 offset: [0px, -0.5px]
2094 repeat_distance: 200px
2098 if( feature.shield_text ) {
2099 return feature.shield_text;
2106 #fill: [0.308,0.308,0.308]
2107 fill: [0.320,0.320,0.320]
2108 size: [[7,7px],[12,8px],[16,11px]]
2110 default_priority_highway:
2113 - kind_detail: motorway
2119 visible: global.sdk_road_shields
2121 default_priority_trunk:
2124 - kind_detail: [trunk]
2125 - $zoom: { min: 10 }
2130 visible: global.sdk_road_shields
2131 default_priority_primary:
2134 - kind_detail: [primary]
2135 - $zoom: { min: 12 }
2140 visible: global.sdk_road_shields
2141 default_priority_trunk_secondary:
2144 - kind_detail: [secondary]
2145 - $zoom: { min: 12 }
2150 visible: global.sdk_road_shields
2151 default_priority_trunk_tertiary:
2154 - kind_detail: tertiary
2155 - $zoom: { min: 13 }
2160 visible: global.sdk_road_shields
2163 # not: { network: ['US:I','US:US'] }
2171 if( feature.shield_text ) {
2172 return (feature.shield_text.length === 1)
2174 return (feature.ref.length === 1)
2179 size: [[6,[14px,14px]],[13,[16px,16px]],[16,[18px,18px]]]
2183 if( feature.shield_text ) {
2184 return (feature.shield_text.length === 2)
2186 return (feature.ref.length === 2)
2191 size: [[6,[18px,14px]],[13,[20px,15px]],[16,[24px,18px]]]
2195 if( feature.shield_text ) {
2196 return (feature.shield_text.length === 3)
2198 return (feature.ref.length === 3)
2203 size: [[6,[25px,14px]],[13,[27px,15px]],[16,[33px,18px]]]
2207 if( feature.shield_text ) {
2208 return (feature.shield_text.length === 4)
2210 return (feature.ref.length === 4)
2215 size: [[6,[29px,14px]],[13,[31px,15px]],[16,[38px,18px]]]
2218 filter: { $zoom: { max: 14 } }
2225 if( feature.shield_text ) {
2226 return (feature.shield_text.length === 5)
2228 return (feature.ref.length === 5)
2233 size: [[6,[34px,14px]],[13,[37px,15px]],[16,[45px,18px]]]
2236 filter: { $zoom: { max: 14 } }
2240 # this is kinda a hack
2244 if( feature.shield_text ) {
2245 return (feature.shield_text.length > 5)
2247 return (feature.ref.length > 5)
2253 # missing-route-relations:
2254 # filter: { shield_text: false }
2261 # Now for the good stuff
2264 filter: { shield_text: true }
2268 # US Interstate roads
2274 # you need to match any custom shield to the vector tile `network` values
2275 sprite: function() { return (feature.network + '-' + feature.shield_text.length + 'char'); }
2277 visible: global.sdk_road_shields
2279 offset: [0px, 0.5px]
2282 size: [[7,8px],[13,9px],[15,11px]]
2284 filter: function() { return (feature.shield_text.length === 1) }
2287 size: [[6,[15px,18px]],[13,[17px,20px]],[15,[22px,25px]]]
2289 filter: function() { return (feature.shield_text.length === 2) }
2292 size: [[6,[18px,18px]],[13,[20px,20px]],[15,[25px,25px]]]
2294 filter: function() { return (feature.shield_text.length === 3) }
2297 size: [[6,[23px,18px]],[13,[26px,20px]],[15,[33px,25px]]]
2299 filter: function() { return (feature.shield_text.length === 4) }
2302 size: [[6,[25px,18px]],[13,[27px,20px]],[15,[35px,25px]]]
2304 filter: function() { return (feature.shield_text.length === 5) }
2307 size: [[6,[26px,18px]],[13,[30px,20px]],[15,[38px,25px]]]
2311 network: ['US:US','US:US:Business', 'US:US:Truck', 'US:US:Alternate']
2315 # you need to match any custom shield to the vector tile `network` values
2317 function() { return ('US:US-' + feature.shield_text.length + 'char'); }
2319 cull_from_tile: true
2320 visible: global.sdk_road_shields
2322 offset: [0px, -0.7px]
2325 size: [[7,8px],[13,9px],[15,11px]]
2327 # filter: { $zoom: [7] }
2331 filter: function() { return (feature.shield_text.length === 1) }
2334 size: [[6,[15px,17px]],[13,[17px,19px]],[15,[22px,24px]]]
2336 filter: function() { return (feature.shield_text.length === 2) }
2339 size: [[6,[18px,17px]],[13,[20px,19px]],[15,[26px,24px]]]
2341 filter: function() { return (feature.shield_text.length === 3) }
2344 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[34px,25px]]]
2346 filter: function() { return (feature.shield_text.length === 4) }
2349 size: [[6,[25px,17px]],[13,[29px,19px]],[15,[39px,25px]]]
2351 filter: function() { return (feature.shield_text.length === 5) }
2354 size: [[6,[27px,17px]],[13,[30px,19px]],[15,[41px,25px]]]
2357 # # Match state highways: `US:??`
2360 # return feature.shield_text &&
2361 # /^US:(?!US)\w\w$/.test(feature.network)
2365 # # you need to match any custom shield to the vector tile `network` values
2368 # filter: { $zoom: [7,8,9] }
2372 # Match California state highways: `US:CA`
2375 return feature.shield_text &&
2376 /^US:CA$/.test(feature.network)
2380 sprite: function() { return (feature.network + '-' + feature.shield_text.length + 'char'); }
2385 size: [[7,7px],[13,9px],[15,10px]]
2387 filter: { kind_detail: [motorway], $zoom: [7,8] }
2390 visible: global.sdk_road_shields
2392 filter: { kind_detail: [trunk], $zoom: [8,9] }
2395 visible: global.sdk_road_shields
2397 filter: { kind_detail: primary, $zoom: [10,11] }
2400 visible: global.sdk_road_shields
2402 filter: function() { return (feature.shield_text.length === 1) }
2405 size: [[6,[14px,16px]],[13,[15px,18px]],[15,[18px,21px]]]
2407 filter: function() { return (feature.shield_text.length === 2) }
2410 size: [[6,[18px,18px]],[13,[20px,20px]],[15,[23px,23px]]]
2412 filter: function() { return (feature.shield_text.length === 3) }
2415 size: [[6,[21px,18px]],[13,[24px,20px]],[15,[28px,23px]]]
2417 filter: function() { return (feature.shield_text.length === 4) }
2420 size: [[6,[24px,18px]],[13,[26px,20px]],[15,[31px,23px]]]
2422 filter: function() { return (feature.shield_text.length === 5) }
2425 size: [[6,[25px,18px]],[13,[27px,20px]],[15,[32px,23px]]]
2427 # Match New York state highways: `US:NY`
2430 return feature.shield_text &&
2431 /^US:NY$/.test(feature.network)
2432 /* (/^US:NY$/.test(feature.network) || /^NY:US$/.test(feature.network)) */
2437 function() { return ( 'US:NY-' + feature.shield_text.length + 'char'); }
2439 # offset: [0px, 1px]
2442 size: [[7,7px],[13,9px],[15,10px]]
2444 filter: function() { return (feature.shield_text.length === 1) }
2447 size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
2449 filter: function() { return (feature.shield_text.length === 2) }
2452 size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
2454 filter: function() { return (feature.shield_text.length === 3) }
2457 size: [[6,[20px,17px]],[13,[22px,19px]],[15,[27px,22px]]]
2459 filter: function() { return (feature.shield_text.length === 4) }
2462 size: [[6,[21px,17px]],[13,[24px,19px]],[15,[29px,22px]]]
2464 filter: function() { return (feature.shield_text.length === 5) }
2467 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30px,22px]]]
2469 # Match Pennsylvania state highways
2472 return feature.shield_text &&
2473 /^US:PA$/.test(feature.network)
2478 function() { return ( 'US:PA-' + feature.shield_text.length + 'char'); }
2483 size: [[7,7px],[13,9px],[15,10px]]
2485 filter: function() { return (feature.shield_text.length === 1) }
2488 size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
2490 filter: function() { return (feature.shield_text.length === 2) }
2493 size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
2495 filter: function() { return (feature.shield_text.length === 3) }
2498 size: [[6,[21px,17px]],[13,[24px,19px]],[15,[28px,22px]]]
2500 filter: function() { return (feature.shield_text.length === 4) }
2503 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30x,22px]]]
2505 filter: function() { return (feature.shield_text.length === 5) }
2508 size: [[6,[24px,17px]],[13,[27px,19px]],[15,[32px,22px]]]
2511 # Match state highways: `US:??:*`
2513 # this is very USA specific
2517 # return feature.shield_text &&
2518 # /^US:(?!US)\w\w:.*$/.test(feature.network)
2521 # this generic for any country with 3rd level networks (like county routes in USA)
2523 # US:US:Business about 150
2528 # ??:??:Loop about 200
2529 # ??:??:Spur about 200
2530 # ??:??:Business about 100
2532 # STATE TEXAS SPECIAL ROUTE
2533 # US:TX:FM -- probably just state? there are 3k of these
2538 return feature.shield_text &&
2539 /^\w+:\w+:(!Alternate).+$/.test(feature.network) &&
2544 # you need to match any custom shield to the vector tile `network` values
2545 sprite: function() { return ('county_shield-' + feature.shield_text.length + 'char'); }
2547 visible: global.sdk_road_shields
2550 fill: [0.320,0.320,0.320]
2551 #size: [[11,7px],[15,10px]]
2553 # filter: { $zoom: { max: 11 } }
2558 filter: function() { return (feature.shield_text.length === 1) }
2561 size: [[6,[14px,14px]],[13,[16px,16px]],[15,[18px,18px]]]
2563 filter: function() { return (feature.shield_text.length === 2) }
2566 size: [[6,[16px,14px]],[13,[18px,15px]],[15,[22px,18px]]]
2568 filter: function() { return (feature.shield_text.length === 3) }
2571 size: [[6,[20px,14px]],[13,[21px,15px]],[15,[26px,18px]]]
2573 filter: function() { return (feature.shield_text.length === 4) }
2576 size: [[6,[25px,14px]],[13,[28px,15px]],[15,[34px,18px]]]
2578 filter: function() { return (feature.shield_text.length === 5) }
2581 size: [[6,[30px,14px]],[13,[33px,15px]],[15,[40px,18px]]]
2585 - kind: [path, portage_way]
2587 - kind_detail: [footway, steps, track, cycleway]
2588 - kind_detail: [pier]
2591 order: function() { return feature.sort_rank; }
2593 color: [0.350,0.350,0.350]
2594 width: [[14, 0.35px], [15, 0.5px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
2596 # color: [0.790,0.790,0.790]
2597 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2607 filter: { kind: portage_way }
2610 color: [0.350,0.350,0.350]
2612 filter: { kind_detail: pedestrian }
2615 color: [[16,[0.749,0.749,0.749]]]
2616 width: [[14, 0.35px], [15, 0.35px], [16, 1px], [17, 2px], [18, 3px], [19, 4px]]
2618 # color: [0.790,0.790,0.790]
2619 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2621 filter: { is_bridge: true }
2624 width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2627 color: [[15, global.path_bridge_casing2],[16, global.path_bridge_casing1]]
2628 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2631 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
2634 color: [0.350,0.350,0.350]
2636 # color: [0.790,0.790,0.790]
2637 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2639 # filter: { landuse_kind: golf_course }
2642 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2644 # color: [0.790,0.790,0.790]
2645 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2647 # filter: { landuse_kind: nature_reserve }
2650 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2652 # color: [0.790,0.790,0.790]
2653 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2655 # filter: { landuse_kind: conservation }
2658 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2660 # color: [0.790,0.790,0.790]
2661 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2662 # in_cemetery_garden:
2663 # filter: { landuse_kind: [cemetery,garden] }
2666 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2667 # width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2669 # color: [0.790,0.790,0.790]
2670 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2672 # filter: { landuse_kind: zoo }
2675 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2676 # width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2678 # color: [0.790,0.790,0.790]
2679 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2681 # filter: { landuse_kind: university }
2684 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2685 # width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2687 # color: [0.790,0.790,0.790]
2688 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2690 # filter: { landuse_kind: hospital }
2693 # color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2694 # width: [[14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2696 # color: [0.790,0.790,0.790]
2697 # width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2699 filter: { $zoom: { min: 17 } }
2703 visible: global.text_visible_path
2705 fill: [0.536,0.556,0.581]
2707 stroke: { color: global.text_stroke, width: 4 }
2709 filter: { kind: path, kind_detail: track }
2712 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2713 width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2717 color: [0.790,0.790,0.790]
2718 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2720 filter: { is_bridge: true }
2724 width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2727 color: [1.0,1.0,1.0]
2728 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2731 filter: { landuse_kind: [park,national_park,nature_reserve,conservation,golf_course,garden,battlefield] }
2734 color: [[14, [0.790,0.790,0.790]], [15, [1.00,1.00,1.00]]]
2735 width: [[13, 0px], [14, 0.35px], [15, 0px], [16, 0.25px], [17, 3px], [18, 3px], [19, 4px]]
2737 color: [0.790,0.790,0.790]
2738 width: [[14, 0.0px], [15, 0.35px], [16, 0.45px], [17, 0.85px], [18, 1px]]
2743 - kind_detail: steps
2746 #order: function() { return feature.sort_rank; }
2748 color: [0.501,0.650,0.650]
2749 width: [[15, 0.6], [16, 1px], [17, 1px], [18, 4px], [19, 1.5m]]
2753 #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 2px], [17, 6px], [18, 7px], [19, 10px]]
2754 #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
2755 color: [[14,[0.510,0.752,0.695]],[15,[0.671,0.839,0.820]],[16,[0.671,0.839,0.820]]]
2756 width: [[13, 0.75px], [14, 0.6px], [15, 1px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
2760 filter: { $zoom: { min: 17 } }
2763 # color: [0.707,0.884,0.872]
2766 # width: [[17, 0px], [18, 1px], [19, 2px]]
2767 # color: [0.850,0.850,0.850]
2769 width: [[17, 2px], [18, 3px], [19, 3.5px]]
2770 color: [0.501,0.650,0.650]
2771 early-show-as-lines-z14:
2772 filter: { $zoom: { max: 16 } }
2779 filter: { walking_network: true }
2782 width: [[13, 0.75px], [14, 1px], [15, 2px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
2784 width: [[13, 1.25px],[14, 2px],[15, 1.75px],[16, 2px], [17, 4px], [18, 5px], [19, 8px]]
2787 color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.870]]]
2788 width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 8px], [17, 10px], [18, 14px], [19, 16px]]
2791 filter: { $zoom: { max: 15 } }
2794 color: [0.120,0.600,0.520]
2795 networked-steps-late:
2796 filter: { $zoom: { min: 18 } }
2799 color: [0.120,0.600,0.520]
2801 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
2804 color: [0.120,0.600,0.520]
2806 # filter: { landuse_kind: university }
2809 # color: global.path_steps1_b
2811 # color: [1.0,1.0,1.0]
2813 # filter: { landuse_kind: hospital }
2816 # color: global.path_steps1_b
2818 # color: [1.0,1.0,1.0]
2820 filter: { $zoom: { min: 17 } }
2824 visible: global.text_visible_steps
2826 fill: [0.45,0.45,0.45]
2828 stroke: { color: global.text_stroke, width: 4 }
2829 winter_sport_pistes:
2830 filter: { kind: piste }
2833 order: 388 # We override the server value here because Eraser Map is also a special Ski Map
2837 width: [[13,0px],[14,1px],[15, 1.25px], [16, 2px], [18, 3m]]
2840 visible: global.text_visible_piste
2842 fill: global.text_fill_piste
2844 stroke: { color: [0.913,0.925,0.933], width: 4 }
2846 filter: { $zoom: { max: 15 } }
2851 filter: { $zoom: [15] }
2855 fill: global.text_fill_piste_e
2858 filter: { piste_difficulty: easy }
2861 color: [0.367,0.750,0.622]
2863 filter: { piste_difficulty: intermediate }
2866 color: [0.420,0.678,0.863]
2868 filter: { piste_difficulty: advanced }
2871 color: [0.450,0.450,0.450]
2873 text_source: global.ux_language_text_source_piste_advanced
2875 filter: { piste_difficulty: expert }
2878 color: [0.450,0.450,0.450]
2880 text_source: global.ux_language_text_source_piste_expert
2882 filter: { kind: path, kind_detail: pier }
2885 color: [0.993,0.993,0.993]
2886 width: [[13, 0px], [14, 0.5px],[15, 1.5px], [16, 2.5px],[17, 3px],[18, 3m]]
2888 color: [0.431,0.806,0.914]
2889 width: [[15, 0px],[16,0.65px], [17, 0.75px], [18, 1px], [19, 1.5px]]
2891 filter: { kind: racetrack }
2896 color: [0.400,0.666,0.690]
2897 width: [[13,0.5px],[14,1px],[15, 1px], [16, 1.5px], [18, 3px], [19, 5px]]
2899 filter: { kind: aeroway, kind_detail: [runway,taxiway] }
2902 color: [[11,[0.25,0.25,0.25]],[17,[0.00,0.00,0.00]]]
2904 width: [[10,1px],[13,3px],[15,16px],[17,60m]]
2906 color: [1.0,1.0,1.0]
2907 # Features come in at zoom 9, but include mostly minor airports without POIs until z13
2909 filter: { $zoom: { max: 12 }, not: { landuse_kind: [aerodrome, runway, taxiway] } }
2914 filter: { $zoom: { min: 17 } }
2919 filter: { kind_detail: taxiway }
2922 color: [[11,[0.885,0.885,0.885]],[13,[0.779,0.802,0.828]],[14,[0.779,0.802,0.828]],[15,[1.0,1.0,1.0]]]
2923 width: [[11,0.5px],[14,1px],[15,0px],[16,1px],[17,6px],[18,9m]]
2925 color: [[11,[0.894,0.906,0.914]],[14,[0.779,0.802,0.828]],[15,[0.714,0.733,0.760]],[17,[0.744,0.764,0.792]]]
2926 width: [[11, 0px],[14,0px],[15,0.75px],[17,2px],[18,3px]]
2928 filter: { $zoom: { max: 13 } }
2933 filter: { kind_detail: runway }
2936 color: [[11, [0.885,0.885,0.885]], [13, [0.714,0.733,0.760]], [15, [1.0,1.0,1.0]], [16, [1.0,1.0,1.0]]]
2938 color: [[11, [0.894,0.906,0.914]], [14,[0.779,0.802,0.828]], [15, [0.714,0.733,0.760]], [16, [0.714,0.733,0.760]], [17, [0.744,0.764,0.792]]]
2939 width: [[11, 0px], [14, 0px], [15, 0.75px], [16, 1.5px], [17, 2px], [18, 3px]]
2941 filter: { kind: ferry }
2944 color: [0.451,0.804,0.878]
2945 width: [[12, 0.5px], [13, 0.75px], [15, 1.0px]]
2947 filter: { kind: aerialway }
2950 color: [0.5,0.5,0.5]
2951 width: [[14, 0.5px], [15, 1.0px], [16, 2m]]
2953 filter: { kind_detail: [gondola, cable_car] }
2956 color: [0.45,0.45,0.45]
2957 width: [[12, 0.5px], [13, 0.5px], [14, 1.75px], [15, 2.5px], [16, 2.5px], [18, 3m]]
2958 # lines_transparent:
2959 # color: [0.5,0.5,0.5]
2960 # width: [[12, 0px], [13, 5px], [14, 8px], [15, 10px], [16, 12px]]
2962 filter: { kind_detail: chair_lift }
2965 color: [0.45,0.45,0.45]
2966 width: [[12, 0.5px], [13, 0.5px], [14, 1.75px], [15, 2.5px], [16, 2.5px], [18, 3m]]
2967 # lines_transparent:
2968 # color: [0.5,0.5,0.5]
2969 # width: [[12, 0px], [13, 5px], [14, 8px], [15, 10px], [16, 12px], [18, 20px]]
2971 filter: { $zoom: { min: 14 } }
2975 visible: global.text_visible_aerialway
2976 text_source: global.ux_language_text_source
2978 fill: global.text_fill
2980 stroke: { color: global.text_stroke_park, width: 4 }
2982 filter: { not: { kind_detail: [gondola,cable_car,chair_lift] }, $zoom: { max: 17 } }
2987 filter: { $zoom: [14], kind_detail: [gondola,cable_car] }
2993 filter: { $zoom: { min: 15 } }
2999 data: { source: mapzen, layer: buildings }
3001 not: { location: underground }
3002 # set default footprint and extrusion draw properties, but don't draw by default (rules below will turn visibility on)
3007 color: [[14,[0.930,0.940,0.940]],[15,[0.920,0.930,0.930]],[16,[0.930,0.940,0.940]]]
3012 color: [[14,[0.750,0.750,0.750]],[17,[0.85, 0.85, 0.85]]]
3013 width: [[14, 0px], [15, 0.5px], [16,0.5px], [17,1px], [18, 1.25px]]
3015 # building footprints, pre-extrusion
3019 # limit show smaller landuse areas to higher zooms
3020 - { $zoom: [13], scale_rank: [1,2] }
3021 - { $zoom: [14], scale_rank: [1,2,3] }
3022 - { $zoom: [15], area: { min: 5000 }, name: true }
3023 - { $zoom: [15], area: { min: 5000 }, kind: true }
3024 - { $zoom: [15], area: { min: 3000 }, landuse_kind: true }
3025 - { $zoom: [15], height: { min: 100 } }
3026 - { $zoom: [15], volume: { min: 100000 } }
3027 - { $zoom: [16], area: { min: 1000 }, name: true }
3028 - { $zoom: [16], area: { min: 1000 }, kind: true }
3029 - { $zoom: [16], area: { min: 2000 }, landuse_kind: true }
3030 - { $zoom: [16], volume: { min: 50000 } }
3031 #- { $zoom: [16], height: { min: 50 } }
3032 - { $zoom: { min: 17 } }
3034 - not: { location: underground }
3044 - function() { return global.sdk_building_extrude; }
3046 # for the buildings that were visible at zoom 15, extrude those all up a bit at z17
3047 - { $zoom: [16], area: { min: 20000 }, name: true }
3048 - { $zoom: [16], area: { min: 20000 }, kind: true }
3049 - { $zoom: [16], area: { min: 5000 }, landuse_kind: true }
3050 - { $zoom: [16], height: { min: 150 } }
3051 - { $zoom: [16], volume: { min: 150000 } }
3052 - { $zoom: [17], area: { min: 5000 }, name: true }
3053 - { $zoom: [17], area: { min: 5000 }, kind: true }
3054 - { $zoom: [17], area: { min: 3000 }, landuse_kind: true }
3055 - { $zoom: [17], height: { min: 100 } }
3056 - { $zoom: [17], volume: { min: 100000 } }
3057 - { $zoom: { min: 18 } }
3062 style: building-grid
3064 color: [0.930,0.940,0.940]
3068 style: building-lines
3071 filter: { $zoom: [16] }
3078 filter: { $zoom: { min: 18 } }
3087 - { $zoom: { min: 18 }, area: { min: 5000 }, name: true }
3088 - { $zoom: { min: 18 }, area: { min: 5000 }, kind: true }
3089 - { $zoom: { min: 18 }, area: { min: 3000 }, landuse_kind: true }
3090 - { $zoom: { min: 18 }, height: { min: 100 } }
3091 - { $zoom: { min: 18 }, volume: { min: 100000 } }
3098 transit-overlay-station-buildings:
3101 - landuse_kind: [station]
3102 - function() { return global.sdk_transit_overlay; }
3107 #extrude: function() { return feature.height || 20; }
3112 width: [[14,0.1px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
3113 #extrude: function() { return feature.height || 20; }
3118 - { $zoom: { min: 17 } }
3120 - not: { location: underground, kind: address }
3122 - function() { return global.text_visible_building; }
3124 - { $zoom: [16], area: { min: 5000 } }
3125 - { $zoom: [16], area: { min: 5000 } }
3126 - { $zoom: [16], area: { min: 10000 }, landuse_kind: true }
3127 - { $zoom: [16], area: { min: 7000 }, kind_detail: [university, college, school, kindergarten] }
3128 - { $zoom: [16], volume: { min: 50000 }, name: true }
3129 - { $zoom: [17], area: { min: 3000 } }
3130 - { $zoom: [17], area: { min: 2000 }, kind_detail: [university, college, school, kindergarten] }
3131 - { $zoom: [18], area: { min: 1000 } }
3132 - { $zoom: [18], kind_detail: [university, college, school, kindergarten] }
3133 - { $zoom: [19], area: { min: 200 } }
3134 - { $zoom: { min: 19 }, kind_detail: [university, college, school, kindergarten] }
3135 - { $zoom: { min: 20 }, area: true }
3138 text_source: global.ux_language_text_source
3139 #interactive: global.interactive
3140 move_into_tile: true
3145 family: global.text_font_family
3148 stroke: { color: global.text_stroke_address, width: 1 }
3149 building_labels-z15-z16-z17:
3150 filter: { $zoom: [15,16,17] }
3151 draw: { text-blend-order: { font: { size: 12px, stroke: { width: 2 } } } }
3152 building_labels-z18:
3153 filter: { $zoom: [18,19] }
3154 draw: { text-blend-order: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } }
3155 building_labels-z20-up:
3156 filter: { $zoom: { min: 20 } }
3157 draw: { text-blend-order: { font: { size: 14px, weight: 600, stroke: { width: 3 } } } }
3158 building-labels-z16:
3159 filter: function() { if( $zoom == 16 && feature.name.length > 20 ) { return true; } else { return false; } }
3163 building-labels-z17:
3164 filter: function() { if( $zoom == 17 && feature.name.length > 30 ) { return true; } else { return false; } }
3168 building-labels-z20+:
3169 filter: { $zoom: { min: 20 } }
3172 text_source: global.ux_language_text_source_building_and_address
3176 - $zoom: { min: 20 }
3177 - function() { return global.text_visible_address; }
3180 - { label_position: true, addr_housenumber: true, name: false }
3183 #interactive: global.interactive
3185 text_source: addr_housenumber
3187 fill: global.text_fill_address
3188 family: global.text_font_family
3191 stroke: { color: global.text_stroke_address, width: 4 }
3194 data: { source: mapzen, layer: boundaries }
3197 order: function() { return (feature.sort_rank + 100); }
3204 color: global.country_boundary
3205 width: [[1, 0.5px], [2, 1.0px], [4, 1.5px], [9, 2.5px], [14, 3.5px], [16, 4.5px], [17, 14m]]
3207 filter: { maritime_boundary: true }
3212 filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
3216 visible: global.text_visible_admin
3217 text_source: global.ux_language_text_source_boundary_lines
3220 family: global.text_font_family
3222 fill: [0.00,0.00,0.00]
3223 transform: uppercase
3225 other_country_boundary_disputed_etc:
3226 filter: { kind: [disputed, indefinite, indeterminate, lease_limit, line_of_control, overlay_limit] }
3229 order: function() { return (feature.sort_rank + 100); }
3230 color: global.country_boundary
3231 width: [[1,0.2px],[9,1.5px],[17,10m]]
3233 filter: { kind: [disputed, line_of_control] }
3238 order: function() { return (feature.sort_rank + 100); }
3239 color: global.country_boundary
3240 width: [[1,0.5px],[9,2.5px],[17,14m]]
3244 - kind: [region,macroregion]
3245 - kind_detail: [3,4]
3248 color: global.region_boundary
3249 width: [[0, 0.5px], [2, 1.0px], [5, 1.25px], [6, 1.5px], [7, 1.75px], [9, 2.0px], [14, 4.0px], [16, 5.0px], [17, 10m]]
3251 filter: { maritime_boundary: true }
3256 filter: { not: { min_zoom: [1,2] }, $zoom: { max: 8 } }
3261 filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
3265 visible: global.text_visible_admin
3266 text_source: global.ux_language_text_source_boundary_lines
3268 #offset: [0px, -7px]
3271 family: global.text_font_family
3273 fill: [0.35,0.35,0.35]
3274 transform: uppercase
3276 filter: { kind: city_wall }
3279 color: global.city_wall
3280 width: [[12, 0.75px], [13, 1.0px], [14, 1.2px], [15, 2.0px], [16, 2.5px], [19, 6m]]
3282 filter: { kind: retaining_wall }
3285 color: global.retaining_wall
3286 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 4m]]
3288 filter: { kind: snow_fence }
3291 color: global.snow_fence
3292 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
3294 filter: { kind: fence }
3297 color: [[14,[0.770,0.765,0.755]],[18,[0.770,0.765,0.755]],[19,[0.841,0.837,0.824]]]
3298 width: [[14, 0.5px], [15, 0.75px], [16, 0.75px], [18, 1.5px], [19, 1m]]
3300 filter: { kind: dam }
3304 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
3307 data: { source: mapzen, layer: places }
3313 text_source: global.ux_language_text_source
3317 family: global.text_font_family
3318 fill: global.text_fill
3319 # NOTE: This is a hack for localities because of an icon & text bug, see note below
3321 text_source: global.ux_language_text_source
3322 visible: false # labels are enabled by each layer below
3325 family: global.text_font_family
3326 fill: global.text_fill
3332 $zoom: { min: 2, max: 9 }
3336 visible: global.text_visible_admin
3338 fill: global.text_fill
3340 stroke: { color: global.text_stroke, width: 4 }
3354 not: { name: [United States of America,Brasil,中华人民共和国,Россия,Canada,Kalaallit Nunaat,Ísland,Australia,India,日本,Guam,Indonesia,South Africa,مصر,Nigeria,Kenya] }
3361 name: [Nederland,Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,Crna Gora,Македонија,The Gambia,Burundi,Swaziland,الإمارات العربية المتحدة,العراق,Singapore,El Salvador,Belize,Trinidad and Tobago, Saint Lucia, Montserrat,Anguilla,República Dominicana,Bahamas,British Virgin Islands,Antigua and Barbuda,Grenada,Sint Maarten,Saint Kitts and Nevis,Cayman Islands,België - Belgique - Belgien,Deutschland,España]
3377 name: [Nederland,Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,Crna Gora,Македонија,The Gambia,Burundi,Swaziland,الإمارات العربية المتحدة,العراق,Singapore,El Salvador,Belize,Trinidad and Tobago, Saint Lucia, Montserrat,Anguilla,República Dominicana,Bahamas,British Virgin Islands,Antigua and Barbuda,Grenada,Sint Maarten,Saint Kitts and Nevis,Cayman Islands,België - Belgique - Belgien,Deutschland,España,Magyarország,Österreich,Polska,Хуссар Ирыстон,Аҧсны - Абхазия]
3391 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
3392 - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,El Salvador,Belize,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
3393 - population: { max: 5000000 }
3407 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
3408 - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
3409 - population: { max: 5000000 }
3414 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
3415 filter: { $zoom: { min: 7, max: 9 } }
3423 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
3424 name: [Liechtenstein,San Marino,Civitatis Vaticanæ,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
3430 - population: { max: 5000000 }
3440 $zoom: { min: 4, max: 9 }
3448 fill: [0.5,0.5,0.5,0.5]
3452 not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
3455 visible: global.text_visible_admin
3456 text_source: global.ux_language_text_source_short
3458 fill: [0.70,0.70,0.70]
3459 stroke: { color: global.text_stroke, width: 4 }
3463 not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
3466 visible: global.text_visible_admin
3467 text_source: global.ux_language_text_source_short
3471 stroke: { color: global.text_stroke, width: 4 }
3475 not: { name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen] }
3478 visible: global.text_visible_admin
3479 text_source: global.ux_language_text_source_short
3483 transform: uppercase
3486 filter: { $zoom: [7] }
3489 visible: global.text_visible_admin
3490 text_source: global.ux_language_text_source_short_proxy_name
3494 transform: uppercase
3498 name: [Western Cape,Eastern Cape,Northern Cape,North West,Limpopo,KwaZulu-Natal,Hamburg,Freie und Hansestadt Hamburg,Neuchâtel,Nordrhein-Westfalen,Haute-Normandie,Baden-Württemberg,Bayern,Sachsen-Anhalt,Berlin,Mecklenburg-Vorpommern,Schleswig-Holstein,Brandenburg,Niedersachsen,Saarland,Thüringen,Hessen,Sachsen]
3503 abbrev-small-ones-z7:
3506 name: [Delaware,New Jersey,Connecticut,Rhode Island,Massachusetts,New Hampshire,Vermont]
3509 text_source: global.ux_language_text_source_abbreviation
3510 font: { transform: uppercase }
3516 text_source: global.ux_language_text_source
3521 - population: { max: 1000000 }
3533 visible: global.icon_visible_populated_places
3534 size: [[10,4px],[11,0px]]
3535 sprite: townspot-xs-rev
3539 visible: global.text_visible_populated_places
3542 size: [[5,9px],[8,10px],[12,11px]]
3543 stroke: { color: global.text_stroke, width: 4 }
3545 visible: global.text_visible_populated_places
3548 size: [[5,9px],[8,10px],[12,11px]]
3549 stroke: { color: global.text_stroke, width: 4 }
3552 # NOTE: you'd think no-townspot would be the way to go, but icons with size 0px seems to have a bug to also hide the text :(
3555 # filter: { $zoom: { min: 11 } }
3562 # NOTE: So instead we play a shell game with symbolizers per zoom
3565 filter: { $zoom: { min: 11 } }
3570 visible: global.text_visible_populated_places
3573 filter: { $zoom: { max: 11 } }
3580 filter: { $zoom: [8,9], population: { min: 10000, max: 50000 } }
3587 filter: { $zoom: [8,9], population: { max: 10000 } }
3594 filter: { $zoom: [8,9], population: false }
3610 # NOTE: These should use icon: buffer instead of going visible: false, but there are problems using icon here :(
3611 # This fixes Paris area, but causes problems for small places in the USA eg Table Bluff near Eureka, California.
3613 filter: { $zoom: [11], population: { max: 1000 }, kind_detail: [village] }
3617 funky-isolated_dwelling:
3618 filter: { $zoom: [13], kind_detail: [isolated_dwelling] }
3623 filter: { $zoom: [13], kind_detail: hamlet }
3629 # someone in London and Salt Lake City thought neighbourhoods should be tagged place: locality
3631 funky-fake-neighbourhoods:
3632 filter: { $zoom: { min: 13 }, kind_detail: [locality] }
3640 population: { min: 10000000 }
3643 size: [[4,5px],[8,6px],[9,0px]]
3644 sprite: townspot-m-rev
3648 size: [[2,11px],[6,17px],[8,19px],[12,21px],[13,0px]]
3652 size: [[2,11px],[6,17px],[8,19px],[12,21px],[13,0px]]
3654 filter: { country_capital: true, $zoom: { min: 5 } }
3657 size: [[10,8px],[11,0px]]
3664 population: { min: 5000000, max: 10000000 }
3667 size: [[4,5px],[8,6px],[9,0px]]
3668 sprite: townspot-m-rev
3672 size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
3676 size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
3678 filter: { country_capital: true, $zoom: { min: 5 } }
3681 size: [[10,8px],[11,0px]]
3688 population: { min: 1000000, max: 5000000 }
3691 size: [[4,5px],[8,6px],[9,0px]]
3692 sprite: townspot-m-rev
3696 size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
3700 size: [[4,10px],[6,16px],[8,18px],[12,20px],[13,0px]]
3702 filter: { country_capital: true, $zoom: { min: 5 } }
3705 size: [[10,8px],[11,0px]]
3712 population: { min: 500000, max: 1000000 }
3715 size: [[8,6px],[9,0px]]
3716 sprite: townspot-m-rev
3720 size: [[5,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
3724 size: [[5,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
3726 filter: { country_capital: true, $zoom: { min: 5 } }
3729 size: [[10,6px],[11,0px]]
3734 population-200k-500k:
3736 population: { min: 200000, max: 500000 }
3739 size: [[8,6px],[9,6px],[10,6px],[11,0px]]
3740 sprite: townspot-m-rev
3744 size: [[6,10px],[8,14px],[10,15px],[12,16px],[13,0px]]
3748 size: [[6,10px],[8,14px],[10,15px],[12,16px],[13,0px]]
3750 filter: { country_capital: true, $zoom: { min: 5 } }
3753 size: [[10,6px],[11,0px]]
3758 population-100k-200k:
3760 population: { min: 100000, max: 200000 }
3763 size: [[8,6px],[9,6px],[10,6px],[11,0px]]
3764 sprite: townspot-m-rev
3768 size: [[6,10px],[8,12px],[14,14px],[15,0px]]
3772 size: [[6,10px],[8,12px],[14,14px],[15,0px]]
3774 filter: { country_capital: true, $zoom: { min: 5 } }
3777 size: [[10,6px],[11,0px]]
3782 population-50k-100k:
3784 population: { min: 50000, max: 100000 }
3787 size: [[8,5px],[9,5px],[10,6px],[11,0px]]
3788 sprite: townspot-s-rev
3792 size: [[6,10px],[8,12px],[14,14px],[15,0px]]
3796 size: [[6,10px],[8,12px],[14,14px],[15,0px]]
3798 filter: { country_capital: true, $zoom: { min: 5 } }
3801 size: [[10,5px],[11,0px]]
3808 population: { min: 20000, max: 50000 }
3811 size: [[8,5px],[9,5px],[10,5px],[11,0px]]
3812 sprite: townspot-s-rev
3816 size: [[9,10px],[14,12px],[15,0px]]
3820 size: [[9,10px],[14,12px],[15,0px]]
3822 filter: { country_capital: true, $zoom: { min: 5 } }
3825 size: [[10,5px],[11,0px]]
3832 population: { min: 10000, max: 20000 }
3835 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
3836 sprite: townspot-xs-rev
3840 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3841 size: [[9,10px],[14,12px],[15,0px]]
3845 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3846 size: [[9,10px],[14,12px],[15,0px]]
3848 filter: { country_capital: true, $zoom: { min: 5 } }
3851 size: [[10,5px],[11,0px]]
3858 population: { min: 5000, max: 10000 }
3861 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
3862 sprite: townspot-xs-rev
3866 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3867 size: [[9,10px],[14,12px],[15,0px]]
3871 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3872 size: [[9,10px],[14,12px],[15,0px]]
3874 filter: { country_capital: true, $zoom: { min: 5 } }
3877 size: [[10,5px],[11,0px]]
3884 population: { min: 2000, max: 5000 }
3887 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
3888 sprite: townspot-xs-rev
3892 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3893 size: [[9,10px],[14,12px],[15,0px]]
3897 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3898 size: [[9,10px],[14,12px],[15,0px]]
3900 filter: { country_capital: true, $zoom: { min: 5 } }
3903 size: [[10,5px],[11,0px]]
3910 population: { min: 1000, max: 2000 }
3913 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
3914 sprite: townspot-xs-rev
3918 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3919 size: [[9,10px],[14,12px],[15,0px]]
3923 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3924 size: [[9,10px],[14,12px],[15,0px]]
3926 filter: { country_capital: true, $zoom: { min: 5 } }
3929 size: [[10,5px],[11,0px]]
3936 population: { min: 200, max: 1000 }
3939 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
3940 sprite: townspot-xs-rev
3944 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3945 size: [[9,10px],[14,11px],[15,0px]]
3949 fill: [[9,[0.25,0.25,0.25]],[11,[0.00,0.00,0.00]]]
3950 size: [[9,10px],[14,11px],[15,0px]]
3952 filter: { country_capital: true, $zoom: { min: 5 } }
3955 size: [[10,5px],[11,0px]]
3969 is_landuse_aoi: false
3978 fill: [0.600,0.600,0.600]
3980 transform: uppercase
3981 stroke: { color: [0.894,0.906,0.914], width: 4 }
3986 max_zoom: { min: 12 }
3987 #- kind_tile_rank: { max: 6 }
3991 visible: global.text_visible_neighbourhoods_e
3998 max_zoom: { min: 13 }
3999 #- kind_tile_rank: { max: 8 }
4003 visible: global.text_visible_neighbourhoods_e
4009 min_zoom: [11,12,13]
4010 max_zoom: { min: 14 }
4011 kind_tile_rank: { max: 8 }
4015 visible: global.text_visible_neighbourhoods_e
4019 fill: [0.620,0.620,0.620]
4020 stroke: { color: [0.904,0.916,0.924], width: 4 }
4024 min_zoom: [11,12,13,14]
4025 max_zoom: { min: 15 }
4026 kind_tile_rank: { max: 8 }
4030 visible: global.text_visible_neighbourhoods
4034 fill: [0.600,0.600,0.600]
4035 stroke: { color: [0.914,0.926,0.934], width: 5 }
4039 min_zoom: [11,12,13,14,15]
4040 max_zoom: { min: 16 }
4041 kind_tile_rank: { max: 8 }
4045 visible: global.text_visible_neighbourhoods
4049 fill: [0.650,0.650,0.650]
4050 stroke: { color: [0.949,0.953,0.953], width: 6 }
4063 min_zoom: [11,12,13,14,15,16]
4064 max_zoom: { min: 17 }
4065 kind_tile_rank: { max: 8 }
4068 visible: global.text_visible_neighbourhoods
4072 fill: [0.00,0.00,0.00,0.50]
4073 stroke: { color: [0.949,0.953,0.953], width: 6 }
4077 data: { source: mapzen, layer: [pois] }
4078 filter: { kind: motorway_junction, $zoom: { min: 15 } }
4083 visible: global.text_visible_exits
4084 interactive: global.interactive
4088 fill: global.text_fill_exits
4089 size: [[12,9px],[15,12px],[17,14px]]
4090 stroke: { color: global.text_stroke, width: [[12,2px],[14,3px],[15,3px]] }
4092 filter: { $zoom: { min: 16 } }
4098 data: { source: mapzen, layer: [pois] }
4099 filter: { kind: aeroway_gate, $zoom: { min: 16 } }
4104 visible: global.text_visible_airport_gate
4105 interactive: global.interactive
4108 fill: global.text_fill_exits
4109 size: [[16,9px],[17,10px],[20,12px]]
4110 #stroke: { color: global.highway1, width: [[12,2px],[14,3px],[15,3px]] }
4112 filter: { $zoom: { min: 19 } }
4119 data: { source: mapzen, layer: pois }
4120 #visible: global.label_visible_poi_landuse
4123 - not: { kind: [building,address,farm,apron,residential,commercial,industrial] }
4125 # White list a few kinds to "always" show per the tile zoom inclusion, else test feature's min_zoom
4126 #- function() { return feature.min_zoom <= $zoom }
4127 - function() { if( feature.kind == 'attraction' || feature.kind == 'landmark' || feature.kind == 'hunting' || feature.kind == 'dive_centre' || feature.kind == 'gas_canister' || feature.kind == 'hunting' || feature.kind == 'fishing_area' || feature.kind == 'playground' || feature.kind == 'toilets' ) { return true } else { return feature.min_zoom <= $zoom } }
4130 visible: global.icon_visible_poi_landuse
4131 size: [[13, 18px], [16, 18px], [18, 22px]]
4132 sprite: function() { return feature.kind; }
4133 sprite_default: generic
4134 interactive: global.interactive
4135 priority: 65 #function() { return (feature.min_zoom && Math.floor(feature.min_zoom * 1000)) || 65; }
4139 visible: global.text_visible_poi_landuse
4140 text_source: global.ux_language_text_source
4144 family: global.text_font_family
4146 fill: [0.10,0.10,0.10]
4147 size: [[13,10px],[14,10px],[18,11px]]
4148 stroke: { color: global.text_stroke, width: 3 }
4150 visible: false # labels are enabled by each layer below, and these are only for special cases like enclosures
4151 move_into_tile: false # preserves text alignment w/icons in JS
4152 interactive: global.interactive
4153 text_source: global.ux_language_text_source
4155 family: global.text_font_family
4157 fill: [0.10,0.10,0.10]
4158 size: [[13,10px],[14,10px],[18,11px]]
4159 stroke: { color: global.text_stroke, width: 3 }
4160 # improve legibility at high zooms
4162 filter: { $zoom: { min: 18 } }
4166 # some pois have really long names
4172 kind: [park, national_park, conservation, protected_area, nature_reserve, forest, grass, beach, battlefield]
4177 fill: [0.032,0.522,0.530]
4179 size: [[13,11px],[14,11px],[18,12px]]
4182 filter: { name: true }
4183 # match 1:1 correlations between data and sprite name
4192 # sprite_source: kind
4193 sprite: function() { return feature.kind; }
4194 visible: global.icon_visible_poi_landuse
4195 # add generic icon at high zoom, if direct match fails
4197 filter: { $zoom: { min: 18 }, area: false }
4201 sprite_default: generic
4202 visible: global.icon_visible_poi_landuse
4204 # add generic icon at high zoom
4205 default-label-names:
4206 filter: { $zoom: { min: 13 }, area: false }
4210 visible: global.text_visible_poi_landuse
4212 filter: { kind: [peak, volcano] }
4215 visible: global.icon_visible_poi_landuse
4217 text: { visible: global.text_visible_poi_landuse }
4218 low-priority-early-z11:
4219 filter: { kind_tile_rank: { min: 3 }, $zoom: [11,12] }
4223 text: { visible: false }
4224 low-priority-early-z13:
4225 filter: { kind_tile_rank: { min: 4 }, $zoom: [13] }
4229 text: { visible: false }
4231 filter: { kind: [peak, volcano], $zoom: { min: 14 } }
4235 text_source: function() { if( feature.name && feature.elevation ) { return feature.name + "\n" + feature.elevation + "m"; } else { if( feature.name ) { return feature.name; } else { return feature.elevation; } } }
4237 filter: { kind: [waterfall], $zoom: { max: 14 } }
4240 visible: global.icon_visible_poi_landuse
4241 text: { visible: global.text_visible_poi_landuse }
4242 low-priority-early-z11:
4243 filter: { kind_tile_rank: { min: 3 }, $zoom: [11,12] }
4247 text: { visible: false }
4248 low-priority-early-z13:
4249 filter: { kind_tile_rank: { min: 4 }, $zoom: [13] }
4253 text: { visible: false }
4255 filter: { kind: [waterfall], $zoom: { min: 14 } }
4259 text_source: function() { if( feature.name && feature.height ) { return feature.name + "\n" + feature.height + "m"; } else { if( feature.name ) { return feature.name; } else { return feature.height; } } }
4260 playgrounds_allotments_attraction_landmark_supermarket:
4263 - kind: [playground, allotments, attraction, landmark, supermarket]
4267 - { $zoom: [15], area: { min: 600 } }
4268 - { $zoom: [16], area: { min: 300 } }
4269 - { $zoom: { min: 17 }, area: true }
4272 visible: global.icon_visible_poi_landuse
4275 visible: global.text_visible_poi_landuse
4278 # stroke: { color: global.text_stroke, width: 4 }
4282 - kind: [zoo, theme_park, resort, aquarium, winery, maze, stadium, enclosure, animal]
4286 # show labels for smaller landuse areas at higher zooms
4287 - { $zoom: { min: 11 }, area: { min: 400000 } }
4288 - { $zoom: { min: 12 }, area: { min: 200000 } }
4289 - { $zoom: { min: 13 }, area: { min: 50000 } }
4290 - { $zoom: { min: 14 }, area: { min: 20000 } }
4291 - { $zoom: { min: 15 }, area: { min: 2000 } }
4292 - { $zoom: { min: 16 } }
4295 sprite: function() { return feature.kind; }
4296 sprite_default: generic
4297 visible: global.icon_visible_poi_landuse
4300 visible: global.text_visible_poi_landuse
4303 # stroke: { color: global.text_stroke, width: 4 }
4304 outdoor-needing-icons:
4305 filter: { kind: [bicycle_repair_station, cycle_barrier, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, communications_tower, putin, egress, hazard, put_in_egress, rapid, beacon, cross, mineshaft, adit, water_well, saddle, dune, sinkhole, rock, stone, bicycle_junction, walking_junction, dam, boat_storage, windmill, fishing, recreation_track, horse, fire_lookout, fee_station, rest_area] }
4311 filter: { kind: [outdoor, lighthouse, saddle, picnic_area, picnic_table, camp_site, ski, mine, zoo, museum, gas, gas_canister, slipway, mineshaft, adit, recreation_track, playground, allotments, attraction, landmark] }
4315 not-outdoor-not-landuse:
4316 filter: { area: false, not: { kind: [park, national_park, outdoor, bicycle_repair_station, life_ring, waste_disposal, watering_place, water_point, lifeguard_tower, power_pole, power_tower, petroleum_well, bicycle_junction, walking_junction, dam, boat_storage, windmill, playground, allotments, attraction, landmark] } }
4321 # source icon sprite from something other than kind
4323 filter: { kind: [grass, pitch] }
4326 sprite: function() { return feature.kind_detail; }
4327 # needs a better recreation icon, so just use generic (default) for now
4328 #sprite_default: sports
4329 #visible: global.icon_visible_poi_landuse_e
4333 kind: [place_of_worship, wayside_chapel]
4336 sprite: function() { return feature.religion; }
4337 sprite_default: place_of_worship
4338 # TODO: some or all of this may be unnecessary for the sprite, but is necessary for the early filter
4341 kind: [apartments, auditorium, building, hangar, manor, recreation_center, retirement_home, terminal]
4348 # show labels for smaller landuse areas at higher zooms
4349 - { $zoom: [14], area: { max: 200000 } }
4350 - { $zoom: [15], area: { max: 20000 } }
4351 - { $zoom: [16], area: { max: 5000 } }
4352 - { $zoom: [17], area: { max: 1000 } }
4356 #end different icon sprites
4358 #most POI icons without name should be hidden, except these
4360 filter: { name: false }
4364 # eg park polygons in SF that have area but no name, sigh
4372 # we agree with server value, always show
4375 kind: [bbq,bicycle_junction,firepit,fishing_area,geyser,hot_spring,observatory,picnic_site,picnic_table,playground,power_pole,power_tower,pylon,shower,slipway,swimming_area,toilets,trailhead,walking_junction,water_tower]
4376 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4378 # probaly difference with server, selectively show by zoom
4379 z15-always-show-but-server-show-later-z15-server-14:
4380 filter: { kind: [ranger_station, spring], $zoom: { min: 15 } } # server says min_zoom: 14
4381 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4386 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4388 # for different styles, different sets
4389 # since [picnic_site] doesn't have bubble-wrap icon, it's omitted here
4391 $zoom: { min: 18 } # same as BW, server at 17 now (information is 16)
4392 kind: [drinking_water, information, playground, toilets, traffic_signals, picnic_site]
4393 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4396 $zoom: { min: 19 } # same as BW, server at 17 now
4397 kind: [bicycle_parking, gate]
4398 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4401 # area based show / hide
4405 - kind: [playground, allotments, attraction, landmark]
4407 - { $zoom: [15], area: { min: 600 } }
4408 - { $zoom: [16], area: { min: 300 } }
4409 - { $zoom: { min: 17, area: true } }
4412 visible: global.icon_visible_poi_landuse_e
4414 # special icon and text stuff
4418 kind: [grass, pitch]
4419 kind_detail: [baseball, basketball, football, hockey, soccer, tennis]
4422 visible: global.icon_visible_poi_landuse_e
4425 filter: { kind: tree, $zoom: { min: 18 } }
4428 # TODO: put tree icons behind the buildings
4429 # See SF State University #20/37.72314/-122.47772
4430 color: [0.145,0.745,0.643]
4431 visible: global.icon_visible_poi_landuse_e
4433 filter: { $zoom: [18] }
4436 color: [0.459,0.765,0.722]
4439 filter: { kind: gate, $zoom: { min: 19 } }
4443 text_source: function() { return 'gate'; }
4444 walking-or-bicycle_junction:
4445 filter: { kind: [bicycle_junction, walking_junction] }
4455 draw: { icons: { visible: false } }
4457 outdoor-special-priority:
4458 filter: { kind: [beacon,bicycle_junction,bicycle_repair_station,boat_storage,communications_tower,cross,dam,dune,egress,fee_station,fire_lookout,hazard,horse,life_ring,lifeguard_tower,petroleum_well,power_pole,power_tower,put_in_egress,putin,rapid,rest_area,rock,saddle,silo,sinkhole,stone,walking_junction,waste_disposal,water_point,water_well,watering_place,windmill] }
4462 visible: global.icon_visible_poi_landuse_e
4464 filter: { kind: [dam,recreation_track] }
4469 filter: { $zoom: { max: 15 } }
4475 # NOTE: all natural_* should only be in landuse layer
4476 suppress-icon-always:
4478 kind: [natural_forest, natural_park, natural_wood]
4486 family: global.text_font_family
4489 # This should work, but doesn't. hmmm
4498 # server problem: this should probably only have landuse layer label placements (not appear in pois layer)
4502 kind: [common, grass, houseboat, pedestrian, railway, ship, wetland]
4507 text: { font: { style: italic } }
4509 # the server should be setting better values here
4513 kind: [landmark, museum, prison]
4520 kind: [natural_forest, natural_park, natural_wood]
4527 kind: [motorway_junction]
4532 hide-until-z15-no-area:
4540 hide-until-z15-with-area:
4544 kind: [nursing_home]
4550 kind: [fire_station, grass, tram_stop, post_office]
4555 hide-until-z16-no-area:
4558 kind: [allotments, college, garden, university]
4563 # no POIs for commercial, residential
4567 kind: [bank, bus_stop, car_sharing, wood, platform, cafe, restaurant, fast_food, bar, place_of_worship, police]
4571 hide-until-z17-with-area:
4575 kind: [common, grass, houseboat, pedestrian, pitch, railway, ship, wetland]
4579 hide-until-z17-no-area:
4583 # note: atm and drinking_water appear hear and in area versions
4584 kind: [accountant, administrative, advertising_agency, animal, architect, association, atm, bakery, bed_and_breakfast, bicycle, bicycle_parking, bicycle_rental_station, books, butcher, car, car_repair, chalet, clothes, company, computer, consulting, convenience, doityourself, drinking_water, dry_cleaning, educational_institution, emergency_phone, employment_agency, estate_agent, fashion, financial, florist, foundation, gift, government, greengrocer, guest_house, hairdresser, hostel, hotel, insurance, it, jewelry, lawyer, mast, memorial, mobile_phone, motel, newspaper, ngo, notary, optician, parking, pet, physician, political_party, post_box, religion, research, subway_entrance, tax_advisor, telecommunication, telephone, theatre, therapist, toilets, traffic_signals, travel_agent, water_tower]
4590 kind: [atm, bus_stop, drinking_water]
4595 hide-until-z18-no-area:
4599 kind: [bench, parking, waste_basket]
4606 kind: [bicycle_parking, burial_vault, car_sharing]
4611 # hide based on kind and area filters
4616 # show labels for smaller landuse areas at higher zooms
4617 - { $zoom: [8], area: { max: 50000000 } }
4623 kind: [university, college]
4625 # show labels for smaller landuse areas at higher zooms
4626 - { $zoom: [11], area: { max: 2000000 } }
4627 - { $zoom: [12], area: { max: 500000 } }
4633 kind: [school, kindergarten]
4635 # show labels for smaller landuse areas at higher zooms
4636 - { $zoom: [13], area: { max: 100000 } }
4637 - { $zoom: [14], area: { max: 50000 } }
4638 - { $zoom: [15], area: { max: 10000 } }
4639 - { $zoom: [16], area: { max: 5000 } }
4640 - { $zoom: [17], area: { max: 2000 } }
4646 kind: [garden, allotments]
4648 # limit show smaller landuse areas to higher zooms
4649 - { $zoom: [12], area: { max: 500000 } }
4650 - { $zoom: [13], area: { max: 100000 } }
4651 - { $zoom: [14], area: { max: 10000 } }
4652 - { $zoom: [15], area: { max: 5000 } }
4659 # limit show smaller landuse areas to higher zooms
4661 - { $zoom: [12], area: { max: 3000000 } }
4669 - { $zoom: [12], area: { max: 2500000 } }
4675 - { kind: [insurance, office, company], $zoom: [15], area: { max: 10000 } }
4676 - { kind: [insurance, office, company], $zoom: [16], area: { max: 5000 } }
4680 landuse-labels-green-areas-not-national-park:
4682 kind: [park, conservation, protected_area, nature_reserve, forest, grass]
4684 # show labels for smaller landuse areas at higher zooms
4685 - { $zoom: { max: 6 }, area: true }
4686 - { $zoom: [6], area: { max: 5000000000 } }
4687 - { $zoom: [7], area: { max: 5000000000 } }
4688 - { $zoom: [8], area: { max: 1000000000 } }
4689 - { $zoom: [9], area: { max: 100000000 } }
4690 - { $zoom: [10], area: { max: 50000000 } }
4691 - { $zoom: [11], area: { max: 20000000 } }
4692 - { $zoom: [12], area: { max: 5000000 } }
4693 - { $zoom: [13], area: { max: 200000 } }
4694 - { $zoom: [14], area: { max: 50000 } }
4695 - { $zoom: [15], area: { max: 5000 } }
4696 - { $zoom: [16], area: { max: 1000 } }
4700 wilderness-areas-early:
4701 filter: function() { return $zoom < 9 && feature.name && (feature.name.indexOf("Wilderness") > -1 || feature.name.indexOf("BLM") > -1 || feature.protect_class == '1' || feature.protect_class == '1a' || feature.protect_class == '1b' ); }
4706 filter: function() { return feature.name && !((feature.name.indexOf("National Park") > -1) || feature.name.indexOf("National Monument") > -1); }
4708 filter: { $zoom: { max: 8 } }
4712 landuse-labels-not-any-above:
4715 not: { kind: [aerodrome, airport, allotments, aquarium, attraction, battlefield, beach, cemetery, college, conservation, forest, garden, glacier, golf_course, grass, kindergarten, landmark, maze, national_park, nature_reserve, park, playground, protected_area, resort, school, stadium, station, theme_park, university, winery, winter_sports, zoo] }
4720 filter: { $zoom: { max: 14 }, kind: glacier, area: false }
4726 # set special priority, sprite, and text styles per kind
4728 # filter: { area: true }
4733 national-park-protected-areas:
4738 visible: global.icon_visible_landuse_green
4739 size: global.icon_size_green
4743 visible: global.text_visible_landuse_green
4745 fill: global.text_fill_park
4749 # filter: { $zoom: { min: 14 } }
4753 # size: [[14,24px],[16,32px]]
4756 - kind: [park, conservation, grass]
4757 - { kind: protected_area, not: { protect_class: [6, '6'] } }
4760 visible: global.icon_visible_landuse_green
4761 size: global.icon_size_green
4765 visible: global.text_visible_landuse_green
4767 fill: global.text_fill_park
4771 filter: { kind: [grass], $zoom: { min: 16 } }
4781 - { kind: protected_area, protect_class: [6, '6'] }
4784 visible: global.icon_visible_landuse_green
4785 size: global.icon_size_green
4789 visible: global.text_visible_landuse_green
4791 fill: global.text_fill_park
4793 # wilderness-nature_reserve:
4795 # - kind: nature_reserve
4798 # visible: global.icon_visible_landuse_green
4799 # size: global.icon_size_green
4803 # visible: global.text_visible_landuse_green
4805 # fill: global.text_fill_park
4813 visible: global.icon_visible_landuse_green
4814 size: global.icon_size_green
4816 visible: global.text_visible_landuse_green
4818 fill: global.text_fill_beach
4821 kind: [airport, aerodrome]
4824 visible: global.icon_visible_landuse_green
4825 size: global.icon_size_green
4828 visible: global.text_visible_landuse_green
4829 text_source: global.ux_language_text_source_iata
4831 filter: { $zoom: [9,10,11] }
4832 draw: { icons: { text: { text_source: iata } } }
4834 filter: { $zoom: { min: 12 } }
4835 draw: { icons: { text: { font: { size: 11px } } } }
4838 kind: [enclosure, animal]
4863 fill: global.text_fill_park
4865 # landuse-labels-not-any-above:
4867 # not: { kind: [aerodrome, airport, allotments, aquarium, attraction, battlefield, beach, cemetery, college, conservation, forest, garden, glacier, golf_course, grass, kindergarten, landmark, maze, national_park, nature_reserve, park, playground, protected_area, resort, school, stadium, station, theme_park, university, winery, winter_sports, zoo] }
4873 filter: { kind: [commercial,residential,warehouse,public,dormitory], osm_relation: false }
4878 station-train-subway:
4879 filter: { kind: [station, train_station] }
4882 visible: global.icon_visible_station
4883 size: [[13, 12px], [14, 12px], [15, 16px], [17, 18px], [18, 20px]]
4886 visible: global.text_visible_station
4893 # for a transit style we'd want to see **all**, so don't move this above (it's special to this style)
4895 filter: { kind_tile_rank: { min: 5 }, $zoom: { min: 0, max: 13 } }
4899 low-priority-early-z13:
4900 filter: { kind_tile_rank: { min: 5 }, $zoom: [13] }
4904 low-priority-early-z14:
4905 filter: { kind_tile_rank: { min: 7 }, $zoom: [14] }
4908 text: { visible: false }
4911 filter: { kind: tram_stop, $zoom: { max: 15 } }
4918 filter: { kind: tram_stop, $zoom: { min: 15 } }
4921 size: [[16, 12px], [17, 18px]]
4923 garden-no-area-early:
4924 filter: { kind: [garden, allotments], $zoom: [16], area: false }
4929 text: { font: { size: 10px, style: italic } }
4930 garden-no-area-later:
4931 filter: { kind: [garden, allotments], $zoom: { min: 17 }, area: false }
4936 text: { font: { size: 11px, style: italic } }
4938 filter: { kind: gate, name: true }
4939 draw: { icons: { sprite: generic } }
4948 visible: global.text_visible_poi_landuse
4952 filter: { kind: [tower], label_placement: true }
4961 # TODO: this isn't working, should see small icons near the transbay terminal in SF
4973 filter: { $zoom: { max: 19 } }
4980 filter: { kind: aeroway_gate }
4985 visible: global.text_visible_airport_gate
4989 fill: global.text_fill_exits
4990 size: [[16,9px],[17,12px],[20,14px]]
4992 filter: { $zoom: { min: 19 } }
5000 filter: { kind: motorway_junction, $zoom: { min: 16 } }
5005 visible: global.text_visible_exits
5009 fill: global.text_fill_exits
5010 size: [[12,9px],[15,12px],[17,14px]]
5011 stroke: { color: global.text_stroke, width: [[12,2px],[14,3px],[15,3px]] }
5013 filter: { $zoom: { min: 16 } }
5022 data: { source: mapzen, layer: [water] }
5023 visible: global.text_visible_water_labels
5028 - not: { kind: [riverbank, dock, playa] }
5031 # show labels for smaller landuse areas at higher zooms
5032 - { $zoom: { min: 5 }, area: { min: 10000000000 } }
5033 - { $zoom: { min: 6 }, area: { min: 5000000000 } }
5034 - { $zoom: { min: 7 }, area: { min: 400000000 } }
5035 - { $zoom: { min: 8 }, area: { min: 200000000 } }
5036 - { $zoom: { min: 9 }, area: { min: 100000000 } }
5037 - { $zoom: { min: 10 }, area: { min: 100000000 } }
5038 - { $zoom: { min: 11 }, area: { min: 10000000 } }
5039 - { $zoom: { min: 12 }, area: { min: 2000000 } }
5040 - { $zoom: { min: 13 }, area: { min: 1000000 } }
5041 - { $zoom: { min: 14 }, area: { min: 500000 } }
5042 - { $zoom: { min: 15 }, area: { min: 100000 } }
5043 - { $zoom: { min: 15 }, area: { min: 50000 } }
5044 - { $zoom: { min: 16 }, area: { min: 20000 } }
5045 - { $zoom: { min: 17 } }
5049 text_source: global.ux_language_text_source
5051 fill: global.text_fill_water
5052 family: global.text_font_family
5056 # stroke: { color: [0.878,0.929,0.980], width: 2 }
5058 filter: { $zoom: [5] }
5060 text-blend-order: { font: { size: 9px } }
5062 filter: { $zoom: [6] }
5064 text-blend-order: { font: { size: 11px } }
5066 filter: { $zoom: [8] }
5068 text-blend-order: { font: { size: 12px } }
5071 data: { source: mapzen, layer: water }
5072 visible: global.text_visible_water_labels
5073 filter: { name: true, kind: [sea, ocean] }
5076 text_source: global.ux_language_text_source
5078 fill: global.text_fill_water
5079 family: global.text_font_family
5082 transform: uppercase
5084 filter: { kind: ocean }
5086 filter: { $zoom: { min: 1, max: 4 } }
5089 text_source: global.ux_language_text_source_sea
5092 filter: { $zoom: { min: 4 } }
5095 text_source: global.ux_language_text_source_ocean
5101 size: [[1,8px],[2,10px],[3,13px],[4,16px]]
5104 filter: { $zoom: [3], kind: sea }
5105 draw: { text-blend-order: { visible: false } }
5107 filter: { not: { kind: [ocean] }, $zoom: { min: 4 } }
5110 text_source: global.ux_language_text_source_sea
5114 filter: { not: { kind: [ocean] } }
5118 fill: [0.350,0.350,0.350]
5119 size: [[4,8px],[6,11px],[8,14px]]
5122 data: { source: mapzen, layer: earth }
5123 filter: { name: true }
5126 text_source: global.ux_language_text_source
5128 filter: { kind: [continent], $zoom: {max: 5} }
5131 visible: global.text_visible_continent
5132 text_source: global.ux_language_text_source_continent_stacked_only
5135 family: global.text_font_family
5136 size: [[1,11px],[3,14px]]
5138 fill: global.text_fill
5140 transform: uppercase
5142 filter: { $zoom: { min: 2 } }
5145 text_source: global.ux_language_text_source_continent
5147 filter: { kind: [archipelago, island, islet] }
5150 visible: global.text_visible_island
5153 family: global.text_font_family
5156 fill: global.text_fill
5158 stroke: { color: global.text_stroke, width: 4 }
5159 #transform: uppercase
5162 data: { source: mapzen, layer: landuse }
5165 order: function() { return feature.sort_rank; }
5171 - label_placement: true
5175 text_source: global.ux_language_text_source
5176 interactive: global.interactive
5177 move_into_tile: true
5179 visible: global.text_visible_landuse_generic
5182 family: global.text_font_family
5185 stroke: { color: global.text_stroke_address, width: 1 }
5188 filter: { kind: [allotments] }
5193 visible: global.icon_visible_poi_landuse
5194 size: [[13, 18px], [16, 18px], [18, 22px]]
5195 sprite: function() { return feature.kind; }
5196 sprite_default: generic
5197 interactive: global.interactive
5198 priority: 65 #function() { return (feature.min_zoom && Math.floor(feature.min_zoom * 1000)) || 65; }
5202 visible: global.text_visible_poi_landuse
5203 text_source: global.ux_language_text_source
5207 family: global.text_font_family
5209 fill: [0.10,0.10,0.10]
5210 size: [[13,10px],[14,10px],[18,11px]]
5211 stroke: { color: global.text_stroke, width: 3 }
5215 # # limit show smaller landuse areas to higher zooms
5216 # - { $zoom: { min: 3 }, area: { min: 300000000 } }
5217 # - { $zoom: { min: 4 }, area: { min: 300000000 } }
5218 # - { $zoom: { min: 5 }, area: { min: 150000000 } }
5219 # - { $zoom: { min: 6 }, area: { min: 150000000 } }
5220 # - { $zoom: { min: 7 }, area: { min: 100000000 } }
5221 # - { $zoom: { min: 8 }, area: { min: 10000000 } }
5222 # - { $zoom: { min: 9 }, area: { min: 5000000 } }
5223 # - { $zoom: { min: 10 }, area: { min: 1000000 } }
5224 # - { $zoom: { min: 11 }, area: { min: 500000 } }
5225 # - { $zoom: { min: 12 }, area: { min: 500000 } }
5226 # - { $zoom: { min: 13 }, area: { min: 100000 } }
5227 # - { $zoom: { min: 14 }, area: { min: 50000 } }
5228 # - { $zoom: { min: 15 }, area: { min: 20000 } }
5229 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5230 # - { $zoom: { min: 16 } }
5235 - kind: [national_park, battlefield, protected_area]
5237 - not: { operator: [ "United States Forest Service" ] }
5238 - protect_class: ['2','3','5']
5242 color: [0.890,1.00,1.00]
5243 # todo: what is this?
5247 # yosemite national park, death valley national park, grand canyon national park
5250 - operator: [ "United States National Park Service" ]
5251 - protect_class: ['2','3','5']
5255 color: [0.890,1.00,1.00]
5260 # # limit show smaller landuse areas to higher zooms
5261 # - { $zoom: { min: 4 }, area: { min: 1000000000 } }
5262 # - { $zoom: { min: 5 }, area: { min: 1000000000 } }
5263 # - { $zoom: { min: 6 }, area: { min: 150000000 } }
5264 # - { $zoom: { min: 7 }, area: { min: 100000000 } }
5265 # - { $zoom: { min: 8 }, area: { min: 10000000 } }
5266 # - { $zoom: { min: 9 }, area: { min: 5000000 } }
5267 # - { $zoom: { min: 10 }, area: { min: 1000000 } }
5268 # - { $zoom: { min: 11 }, area: { min: 500000 } }
5269 # - { $zoom: { min: 12 }, area: { min: 250000 } }
5270 # - { $zoom: { min: 13 }, area: { min: 100000 } }
5271 # - { $zoom: { min: 14 }, area: { min: 50000 } }
5272 # - { $zoom: { min: 15 }, area: { min: 20000 } }
5273 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5274 # - { $zoom: { min: 16 } }
5276 # effectively wilderness
5281 - kind: [protected_area, nature_reserve, national_park]
5282 - not: { protect_class: [2,3,5]}
5285 # color: [1.00,0.974,0.950]
5286 color: [0.88,0.99,0.88]
5290 # color: global.green6
5291 # width: [[9,0px],[10,2px],[12,4px]]
5293 national_forest_level_6:
5298 - protect_class: ['6']
5299 - operator: ['United States Forest Service']
5302 color: [0.945,0.995,0.945] #global.green7
5305 parks-and-national-forests-not-national-park:
5309 - kind: [park, national_park]
5311 - not: { operator: [ "United States National Park Service", "United States Forest Service" ] }
5312 - not: { protect_class: ['2','3','5','6'] }
5313 # default for national forests and more?
5316 color: [0.880,1.000,0.950]
5319 #filter: function() { return feature.name && (feature.name.indexOf('National Park') > -1); }
5322 - kind: national_park
5323 - not: [ protect_class: ['2','3','5','6'], operator: [ "United States National Park Service"] ]
5326 color: [0.890,1.00,1.00]
5330 # gotta be a protected area to draw green, not just a landcover type
5333 kind: [farm, farmland]
5337 color: [1.00,1.00,1.00]
5338 visible: global.green4_v
5340 filter: { kind: [forest, wood, natural_wood, natural_forest, natural_park], $zoom: { min: 10 }, not: { operator: [ "United States Forest Service"] } }
5343 color: [0.956,0.99,0.966]
5347 # filter: { kind: nature_reserve, $zoom: { min: 7 } }
5350 # order: function() { return feature.sort_rank; }
5352 # filter: function() { return feature.name && feature.name.indexOf("Wilderness") > -1 }
5355 # color: [0.890,0.973,0.886]
5359 # # width: [[9,1px],[10,2px],[12,4px]]
5361 # parks-and-national-forests-not-national-park:
5362 # filter: { $zoom: { min: 4 }, kind: [park, national_park, "park or protected land", battlefield], not: { operator: [ "United States National Park Service", "US National Park Service" ] } }
5363 # # default for national forests and more?
5366 # color: [0.880,1.000,0.950]
5367 # # color: [0.850,1.000,0.938]
5368 # # color: [0.860,0.993,1.000]
5369 # # color: [0.915,0.995,0.995]
5374 # filter: { kind: [urban, rural, residential] }
5375 # visible: global.earth2_v
5378 # color: [1.00,1.00,1.00]
5379 # visible: global.earth2_v
5383 # # limit show smaller landuse areas to higher zooms
5384 # - { $zoom: { min: 8 }, area: { min: 10000000 } }
5385 # - { $zoom: { min: 9 }, area: { min: 5000000 } }
5386 # - { $zoom: { min: 10 }, area: { min: 1000000 } }
5387 # - { $zoom: { min: 11 }, area: { min: 500000 } }
5388 # - { $zoom: { min: 12 }, area: { min: 500000 } }
5389 # - { $zoom: { min: 13 }, area: { min: 100000 } }
5390 # - { $zoom: { min: 14 }, area: { min: 50000 } }
5391 # - { $zoom: { min: 15 }, area: { min: 20000 } }
5392 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5393 # - { $zoom: { min: 16 } }
5399 color: global.gray-all
5400 visible: global.purple_v
5406 color: global.gray-all
5410 kind: [university, college]
5413 color: global.gray-all
5418 # # limit show smaller landuse areas to higher zooms
5419 # - { $zoom: { min: 10 }, area: { min: 1000000 } }
5420 # - { $zoom: { min: 11 }, area: { min: 500000 } }
5421 # - { $zoom: { min: 12 }, area: { min: 500000 } }
5422 # - { $zoom: { min: 13 }, area: { min: 100000 } }
5423 # - { $zoom: { min: 14 }, area: { min: 50000 } }
5424 # - { $zoom: { min: 15 }, area: { min: 20000 } }
5425 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5426 # - { $zoom: { min: 16 } }
5432 color: [0.982,1.000,0.960]
5439 color: [0.890,1.000,0.892]
5440 # color: [0.840,1.000,0.907]
5447 color: [0.988,0.938,0.953]
5454 color: global.gray-all
5457 filter: { kind: [plant, generator, substation] }
5460 color: global.gray-all
5467 color: global.gray-all
5469 # IGNORE THIS FOR NOW
5472 # kind: sports_centre
5475 # color: [1.0,1.0,1.0]
5478 kind: recreation_ground
5481 color: [0.945,0.995,0.945]
5488 color: global.gray-all
5492 kind: [zoo, wildlife_park]
5495 color: [0.830,1.000,0.972]
5502 color: [1.0,1.0,1.0]
5503 visible: global.grey8_v
5505 filter: { kind: [pier,wastewater_plant,works,bridge,tower,breakwater,water_works,groyne,dike,cutline] }
5508 color: global.gray-all
5511 filter: { kind: [pier,bridge,breakwater,groyne,dike,cutline] }
5514 color: [1.000,0.973,0.930]
5517 filter: { kind: camp_site }
5520 color: global.gray-all
5526 # # limit show smaller landuse areas to higher zooms
5527 # - { $zoom: { min: 10 }, area: { min: 1000000 } }
5528 # - { $zoom: { min: 11 }, area: { min: 400000 } }
5529 # - { $zoom: { min: 12 }, area: { min: 200000 } }
5530 # - { $zoom: { min: 13 }, area: { min: 50000 } }
5531 # - { $zoom: { min: 14 }, area: { min: 20000 } }
5532 # - { $zoom: { min: 15 }, area: { min: 10000 } }
5533 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5534 # - { $zoom: { min: 16 } }
5553 color: global.gray-all
5560 color: [1.000,0.953,0.900]
5561 # color: [0.975,0.975,0.828]
5566 # # limit show smaller landuse areas to higher zooms
5567 # - { $zoom: { min: 12 }, area: { min: 500000 } }
5568 # - { $zoom: { min: 13 }, area: { min: 100000 } }
5569 # - { $zoom: { min: 14 }, area: { min: 50000 } }
5570 # - { $zoom: { min: 15 }, area: { min: 20000 } }
5571 # - { $zoom: { min: 15 }, area: { min: 2000 } }
5572 # - { $zoom: { min: 16 } }
5575 kind: [garden, allotments]
5578 color: [0.790,0.973,0.896]
5584 - $zoom: { min: 14 }
5586 - { $zoom: { min: 14 }, area: { min: 10000 } }
5587 - { $zoom: { min: 15 }, area: { min: 5000 } }
5590 color: global.gray-all
5591 visible: global.grey1_v
5593 filter: { $zoom: { max: 15 } }
5596 color: [0.950,0.950,0.950]
5600 kind: [pedestrian,common]
5603 color: [0.945,0.995,0.945]
5604 visible: global.grey1_v
5610 color: [0.791,0.953,0.883]
5617 color: [0.890,0.970,1.000]
5618 # color: [0.975,0.975,0.828]
5623 kind: [pitch, meadow, village_green, grass, farmland, playground]
5626 color: [0.808,0.962,0.951]
5629 filter: { kind: [farmland] }
5632 color: [0.965,0.996,0.965]
5635 filter: { kind: [meadow, grass] }
5638 color: [0.825,0.976,0.895]
5640 filter: { kind: pitch, $zoom: { min: 17 } }
5643 color: [0.526,0.809,0.752]
5652 color: [0.930,0.973,0.980]
5659 color: [1.000,0.973,0.930]
5660 # color: [0.975,0.975,0.828]
5663 filter: { $zoom: { min: 15 } }
5671 kind: [scree, farmyard]
5674 color: [1.000,0.953,0.900]
5677 filter: { $zoom: { min: 15 } }
5685 kind: place_of_worship
5688 color: global.gray-all
5689 visible: global.grey1_v
5695 color: [0.795,1.000,0.955]
5702 color: global.gray-all
5714 color: [0.795,1.000,0.955]
5718 # 18/41.19776/-8.68722
5724 order: 501 # function() { return feature.sort_rank; }
5725 color: [0.602,0.860,0.722]
5726 width: [[16,1px],[17,2px],[19,1.5m]]
5729 # 20/37.76779/-122.40096
5735 order: 500 # function() { return feature.sort_rank; }
5736 color: [0.602,0.860,0.722]
5737 width: [[16,0.5px],[17,1px],[19,1m]]
5741 data: { source: mapzen, layer: earth }
5742 filter: { kind: [cliff, arete, ridge, valley] }
5747 # filter: { kind: cliff }
5754 # filter: { kind: arete }
5761 filter: { kind: [ridge, valley] }
5772 stroke: { color: [0.894,0.906,0.914], width: 3 }
5774 filter: { kind: ridge }
5784 stroke: { color: [0.894,0.906,0.914], width: 3 }
5787 data: { source: mapzen, layer: roads }
5792 - kind_detail: [pier]
5795 color: [[11,[0.408,0.741,0.690]],[15,[0.131,0.667,0.575]]] #[11,[0.252,0.509,0.60]],[12,[0.120,0.600,0.520]]
5797 color: [0.120,0.600,0.520]
5799 color: [0.120,0.600,0.520]
5800 # color: [0.257,0.520,0.802] ## added red
5801 # color: [0.302,0.649,0.740] ## more blue
5802 # color: [0.292,0.650,0.644] ## more green
5803 # color: [0.416,0.750,0.746]
5804 # bigger path, sometimes paved (walk with friends side-by-side), also tracks that are no vehicles
5810 - kind_detail: track
5816 color: [[13, [0.510,0.752,0.695]], [14,[0.412,0.710,0.665]], [15, [0.298,0.686,0.627]], [16, [0.860,1.000,0.977]], [17, [0.860,1.000,0.977]]]
5817 width: [[13, 1px], [14, 1.1px], [15, 1.4px], [16, 0px], [17, 1px], [18, 1.75px], [19, 2.25px]]
5820 color: [0.120,0.600,0.520]
5821 width: [[15, 0px], [16, 0.8px], [17, 1.25px], [18, 2.5px]]
5823 filter: { walking_network: true }
5826 width: [[12, 1px], [13, 1px], [14, 1.1px], [15, 1.5px], [16, 0px], [17, 1.5px], [18, 1.75px], [19, 2.25px]]
5829 color: [[12,[1.000,1.000,0.870]],[15,[1.000,1.000,0.870]]]
5830 width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 7px], [17, 10px], [18, 14px], [19, 16px]]
5832 no_name_early_not_designated:
5833 filter: { name: false, $zoom: { max: 14 } }
5838 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments] }
5841 width: [[13, 0.5px], [15, 0.65px], [16, 0px], [17, 1.5px], [18, 1.75px], [19, 2.25px]]
5843 filter: { $zoom: { max: 15 } }
5848 #filter: { $zoom: { min: 17 } }
5852 visible: global.text_visible_path
5854 fill: [0.143,0.544,0.481]
5855 # fill: [0.256,0.570,0.565]
5857 stroke: { color: global.text_stroke, width: 4 }
5859 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments], $zoom: { max: 15 } }
5865 # single hiking path
5867 filter: { kind_detail: [footway] }
5871 color: [0.120,0.600,0.520]
5872 #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 3px], [17, 6px], [18, 7px], [19, 10px]]
5873 width: [[13, 0.75px], [14, 1px], [15, 3.5px], [16, 3px], [17, 4px], [18, 5px], [19, 8px]]
5878 #width: [[13, 0.75px], [14, 0.85px], [15, 1.1px], [16, 2px], [17, 6px], [18, 7px], [19, 10px]]
5879 #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
5880 color: [[14,[0.510,0.752,0.695]],[15,[0.671,0.839,0.820]],[16,[0.671,0.839,0.820]]]
5881 width: [[13, 0.75px], [14, 0.6px], [15, 1px], [16, 2px], [17, 3px], [18, 4px], [19, 4px]]
5886 early-show-as-lines-z14:
5887 filter: { $zoom: { max: 15 } }
5893 early-show-as-lines-z15:
5894 filter: { $zoom: [15] }
5901 filter: { walking_network: true }
5904 #width: [[12, 0.75px], [13, 1px], [14, 1px], [15, 1.25px], [16, 0px], [17, 1.5px], [18, 1.75px], [19, 2.25px]]
5905 width: [[13, 1.25px],[14, 1.4px],[15, 1.75px],[16, 2px], [17, 4px], [18, 5px], [19, 8px]]
5906 #color: [[15,[0.120,0.600,0.520]],[16,[0.623,0.820,0.797]]]
5909 color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.870]]]
5910 width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 8px], [17, 10px], [18, 14px], [19, 16px]]
5913 filter: { $zoom: { max: 15 } }
5916 color: [0.120,0.600,0.520]
5917 # de-emphasize less important trails at early zooms
5918 # where less important are trails without names, trails in less interesting landuse, or just early
5922 - landuse_kind: [zoo, enclosure, petting_zoo, golf_course, garden, university, parking, pedestrian, attraction, residential, stadium, playground, allotments]
5923 - $zoom: { max: 17 }
5928 filter: { $zoom: { max: 16 } }
5933 filter: { $zoom: { max: 16 } }
5936 color: [0.120,0.600,0.520]
5937 width: [[14,0.4px],[15,0.5px]]
5939 filter: { kind: [garden] }
5942 width: [[14,0.1px],[15,0.3px]]
5946 - landuse_kind: [cemetery]
5950 color: [0.863,0.941,0.867]
5952 color: [0.510,0.752,0.695]
5954 filter: { $zoom: { max: 16 } }
5959 filter: { $zoom: { max: 16 } }
5962 color: [0.510,0.752,0.695]
5963 width: [[14,0.25px],[15,0.5px]]
5965 filter: { footway: [sidewalk, crossing], not: { walking_network: true } }
5968 order: 350 # function() { return feature.sort_rank; }
5970 order: 351 # function() { return (feature.sort_rank + 1); }
5974 filter: { $zoom: { max: 18 } }
5981 filter: { $zoom: [17] }
5987 filter: { $zoom: { min: 15 } }
5991 visible: global.text_visible_path
5993 fill: [0.143,0.544,0.481]
5995 stroke: { color: global.text_stroke, width: 4 }
5997 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments], $zoom: { max: 15 } }
6002 cycleway_pedestrian:
6005 - kind_detail: [cycleway, pedestrian]
6006 - not: { kind_detail: [pedestrian], walking_network: true }
6009 # color: blue #[0.120,0.600,0.520]
6010 # width: [[13, 1px], [14, 1.45px], [15, 1.1px], [16, 1.5px], [17, 2px], [18, 5px], [19, 6px]]
6012 color: [[11,[0.120,0.600,0.520]],[14,[0.120,0.600,0.520]],[15,[1.00,1.00,1.00]]]
6013 #width: [[11, 0.25px], [12, 0.35px], [13, 0.55px],[14,1px],[15,0px]]
6014 width: [[13, 0.75px], [14, 1.1px], [15, 1.1px], [16, 1.5px], [17, 2.2px], [18, 5px], [19, 6px]]
6015 # let roads sort themselves past zoom 14
6018 color: [0.120,0.600,0.520]
6019 width: [[11, 0px],[14, 0px],[15, 0.5px],[16, 1px]]
6021 filter: { walking_network: true }
6024 color: [[11,[0.120,0.600,0.520]],[14,[0.120,0.600,0.520]],[15,[1.00,1.00,1.00]]]
6025 width: [[13, 0.75px], [14, 1.1px], [15, 1.1px], [16, 1.5px], [17, 2.2px], [18, 5px], [19, 6px]]
6028 color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.880]]]
6029 width: [[12, 0px], [13, 4px], [14, 5px], [15, 7px], [16, 10px], [17, 12px], [18, 14px], [19, 16px]]
6032 filter: { $zoom: { min: 15 } }
6035 color: [1.00,1.00,1.00]#[0.145,0.745,0.643] #[[17,'#c8ecf7'],[18,'#a9d9e8']] #white
6039 #color: [0.120,0.600,0.520]
6042 width: [[15, 1px], [16, 1.5px], [17, 1.6px], [18, 2px], [19, 2px]]
6045 filter: { $zoom: { min: 14 } }
6049 visible: global.text_visible_path
6051 fill: [0.120,0.600,0.520]
6053 stroke: { color: global.text_stroke, width: 4 }
6056 data: { source: mapzen, layer: roads }
6060 - kind_detail: [track]
6061 - motor_vehicle: false
6064 color: [[13,[0.773,0.705,0.605]],[14,[0.630,0.519,0.418]]]
6065 # color: [0.756,0.563,0.499]
6066 width: [[13, 0.6px], [14, 1px], [15, 1.1px], [16, 1.25px], [17, 1.5px], [18, 5px], [19, 6px]]
6069 filter: { $zoom: { min: 16 } }
6076 color: [0.630,0.519,0.418]
6077 # color: [0.756,0.563,0.499]
6080 width: [[16, 1px], [17, 1.5px], [18, 2px], [19, 2px]]
6083 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments] }
6086 width: [[13, 1px], [14, 1.45px], [15, 1.1px], [16, 1.5px], [17, 2px], [18, 5px], [19, 6px]]
6088 filter: { $zoom: { max: 15 } }
6093 filter: { walking_network: true }
6096 width: [[13, 1px], [14, 1.2px], [15, 1.5px], [16, 1.25px], [17, 1.5px], [18, 3px], [19, 4px]]
6099 color: [[12,[1.000,1.000,0.870]],[15,[1.000,1.000,0.870]]]
6100 width: [[12, 2.5px], [13, 4px], [14, 5px], [15, 6px], [16, 8px], [17, 10px], [18, 14px], [19, 16px]]
6103 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments], $zoom: { max: 15 } }
6108 #filter: { $zoom: { min: 17 } }
6112 visible: global.text_visible_path
6114 fill: [0.536,0.451,0.378]
6116 stroke: { color: global.text_stroke, width: 4 }
6117 in_zoo_golf_course-early:
6118 filter: { landuse_kind: [zoo, golf_course, garden, university, cemetery, allotments], $zoom: { max: 15 } }
6122 other-roads-no-motorvehicle-overlay:
6123 data: { source: mapzen, layer: roads }
6126 - not: { kind: [path,ferry] }
6130 color: [0.710,0.553,0.522]
6131 width: [[11, 0.25px], [12, 0.35px], [13, 0.55px], [14, 1px], [15, 0px], [16, 1.5px], [17, 3px], [18, 3m]]
6134 filter: { $zoom: { min: 15 } }
6137 color: [0.940,0.940,0.940]
6141 color: [0.710,0.553,0.522]
6144 width: [[15, 0.5px], [16, 1.25px], [17, 1.5px], [18, 1.5px], [19, 3px]]
6147 #filter: { $zoom: { min: 17 } }
6151 visible: global.text_visible_path
6153 fill: [0.536,0.451,0.378]
6155 stroke: { color: global.text_stroke, width: 4 }
6158 other-roads-walking-network-only:
6159 data: { source: mapzen, layer: roads }
6162 - walking_network: true
6165 - { kind: [path,ferry], not: { kind_detail: pedestrian } }
6166 #- motor_vehicle: [no,false]
6167 - kind_detail: [track]
6170 color: [0.120,0.600,0.520]
6171 width: [[11, 0.25px], [12, 0.35px], [13, 0.55px], [14, 1px], [15, 0px], [16, 1px], [17, 6px], [18, 9m]]
6174 filter: { $zoom: { min: 16 } }
6177 color: [1.000,1.000,0.870]
6178 width: [[15,0px],[16,1px],[17,4px],[18,6m]]
6180 color: [0.120,0.600,0.520]
6181 width: [[15, 0.5px],[16, 1.5px],[17, 1.5px],[18, 2.5px],[19, 1m]]
6185 width: [[13, 0.9px], [14, 1.2px], [15, 2.0px], [16, 1px], [17, 2px], [18, 6m]]
6188 color: [[12,[0.900,1.000,0.850]],[14,[0.930,1.000,0.850]],[15,[1.000,1.000,0.870]]]
6189 width: [[12, 3px], [13, 4px], [14, 5px], [15, 6px], [16, 10px], [17, 12px], [18, 14px], [19, 16px]]
6191 hide-most-till-mid-zooms:
6194 - $zoom: { max: 12 }
6195 - walking_network: [lwn,rwn]
6202 transit-overlay-rail-lines:
6203 data: { source: mapzen, layer: transit }
6206 - not: { kind: [platform, railway] }
6207 - function() { return global.sdk_transit_overlay; }
6212 width: [[5,1.5px],[6,2px],[11,3px],[18,4px]]
6214 color: [1.,1.,1.,.8]
6215 width: [[7,0px],[8,0.25px],[9,0.5px],[12,1.0px],[13,1.75px],[14,2px]]
6216 #width: [[12,1.0px],[13,1.75px],[14,2px]]
6218 filter: { kind: train }
6222 width: [[5,1.0px],[6,1.0px],[7,1.25px],[11,2.0px],[13,2.5px],[18,3.5px]]
6224 width: [[12,1.0px],[13,1.75px],[14,2px]]
6225 stack-below-other-transit-later-zooms:
6226 filter: { $zoom: { min: 9 } }
6231 filter: { kind: subway }
6234 width: [[9,1px],[11,2px],[12,3px],[13,4px],[15,5px],[16,7px],[17,9px]]
6236 #color: [[10,white],[11,black]]
6237 width: [[9,0px],[10,0.5px],[12,1.25px],[13,1.5px],[15,2px]]
6238 #width: [[12,1.5px],[13,2.0px],[14,2.5px]]
6239 light-rail-and-tram-sizing:
6240 filter: { kind: [light_rail, tram] }
6243 width: [[10,1px],[12,1.5px],[15,2px],[18,3.5px]]
6245 #color: [[11,white],[12,black]]
6246 width: [[12,0.25px],[13,0.5px],[14,1px],[16,2px]]
6248 filter: { colour: true }
6252 width: [[9,2px],[11,3px],[12,4px]]
6253 color: function() { return feature.colour || 'purple'; }
6255 #color: function() { if(feature.colour == 'silver') { return 'black'; } else { return [0.,0.,0.,.1]; } }
6256 #width: [[12,1.0px],[13,1.75px],[14,2px]]
6258 filter: { kind: train }
6263 filter: { kind: subway }
6267 light-rail-and-tram-with-color:
6268 filter: { kind: [light_rail, tram] }
6273 filter: { colour: false }
6274 train-missing-color:
6275 filter: { kind: train, colour: false }
6278 #width: [[5,1.25px],[6,1.75px],[11,2.0px],[13,2.5px],[18,2.5m]]
6280 subway-missing-color:
6281 filter: { kind: subway, colour: false }
6286 # width: [[12,1.5px],[13,2.0px],[14,2.5px]]
6287 light-rail-and-tram-missing-color:
6288 filter: { kind: [light_rail, tram], colour: false }
6292 labels-transit-lines:
6295 - function() { return global.sdk_transit_overlay; }
6297 - $zoom: { min: 13 }
6302 # you need to match any custom shield to the vector tile `network` values
6303 sprite: function() { return ('sdk_shield-' + feature.ref.length + 'char'); }
6304 sprite_default: sdk_shield_5char
6305 color: function() { if ( feature.kind === 'train') { return 'purple' } else { return feature.colour || 'purple'; } }
6306 # Size is specified below, and limited to 5 char in another filter
6307 repeat_group: shields
6308 repeat_distance: [[8,90px],[10,40px],[13,30px]]
6310 placement_min_length_ratio:
6318 cull_from_tile: true
6321 offset: [0px, -0.5px]
6322 repeat_distance: 200px
6324 text_source: function() { if( feature.ref.length < 6 ) { return feature.ref; } else { return ''; } }
6327 fill: function() { if(feature.colour == 'yellow') { return '#555'; } else { return 'white'; } }
6329 size: [[7,7px],[12,8px],[16,11px]]
6332 filter: function() { return (feature.ref.length === 1); }
6335 size: [[6,[16px,16px]],[13,[18px,18px]],[16,[21px,21px]]]
6337 filter: function() { return (feature.ref.length === 2); }
6340 size: [[6,[21px,16px]],[13,[24px,18px]],[16,[28px,21px]]]
6342 filter: function() { return (feature.ref.length === 3); }
6345 size: [[6,[27px,16px]],[13,[31px,18px]],[16,[36px,21px]]]
6347 filter: function() { return (feature.ref.length === 4); }
6350 size: [[6,[32px,16px]],[13,[36px,18px]],[16,[41px,21px]]]
6353 filter: { $zoom: { max: 14 } }
6358 filter: function() { return (feature.ref.length === 5); }
6361 size: [[6,[37px,16px]],[13,[41px,18px]],[16,[48px,21px]]]
6364 filter: { $zoom: { max: 14 } }
6368 # this is kinda a hack
6370 filter: function() { return (feature.ref.length > 5); }
6375 z19-show-long-route-name:
6378 - function() { return global.sdk_transit_overlay; }
6379 - $zoom: { min: 19 }
6385 stroke: { color: white, width: 3px }
6387 # transit-bus-roads:
6388 # data: { source: mapzen, layer: roads }
6389 # filter: { is_bus_route: true }
6392 # visible: global.sdk_transit_overlay
6393 # interactive: false
6394 # color: [[13,[0,0,1,0.5]],[15,blue]]
6395 # width: [[11,0.5px],[12,0.8px],[16,1.25px],[18,1m]]
6396 # # let roads sort themselves past zoom 14
6398 # # but give them all the same outline
6402 transit-overlay-station-labels:
6403 data: { source: mapzen, layer: [pois] }
6405 kind: [station, tram_stop, bus_station, subway_entrance, halt, stop, platform, bus_stop, stop_position ]
6415 visible: global.sdk_transit_overlay
6416 size: [[13, 12px], [16, 16px], [19, 20px]]
6417 interactive: global.interactive
6421 move_into_tile: false # preserves text alignment w/icons in JS
6423 #offset: [[13, [0, 6px]], [16, [0, 8px]], [19, [0, 10px]]] # offset tracks alongside icon size (half icon height)
6424 interactive: global.interactive
6430 stroke: { color: white, width: 3 }
6432 filter: { $zoom: [14] }
6433 draw: { icons: { text: { font: { size: 11px } } } }
6435 filter: { $zoom: [15,16,17] }
6436 draw: { icons: { text: { font: { size: 12px, stroke: { width: 2 } } } } }
6438 filter: { $zoom: [18,19] }
6439 draw: { icons: { text: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } } }
6441 filter: { $zoom: { min: 20 } }
6442 draw: { icons: { text: { font: { size: 14px, weight: 600, stroke: { width: 3 } } } } }
6443 station-train-subway:
6444 filter: { kind: [station, train-station, train_station] } #, $zoom: { min: 13 }
6447 sprite: train_station
6448 size: [[13, 12px], [14, 14px], [15, 16px], [17, 20px]]
6451 #offset: [[13, [0, 6px]], [14, [0, 7px]],[15, [0, 8px]], [17, [0, 10px]]]
6454 filter: { kind_tile_rank: { min: 3 }, $zoom: { min: 0, max: 12 } }
6457 size: [[12, 5px], [14, 6px], [15, 16px]]
6461 filter: { kind_tile_rank: { min: 10 }, $zoom: [10] }
6465 low-priority-early-z12:
6466 filter: { kind_tile_rank: { min: 8 }, $zoom: [12] }
6470 size: [[12, 5px], [14, 6px], [15, 16px]]
6473 low-priority-early-z13:
6474 filter: { kind_tile_rank: { min: 8 }, $zoom: [13] }
6478 size: [[12, 8px], [14, 6px], [15, 16px]]
6481 low-priority-early-z14:
6482 filter: { kind_tile_rank: { min: 7 }, $zoom: [14] }
6485 size: [[12, 10px], [14, 11px], [15, 16px]]
6490 filter: { $zoom: { min: 16 } }
6498 filter: { is_subway: true, is_train: false, $zoom: { max: 12 } }
6505 filter: { kind: [halt,stop], $zoom: { max: 15 } }
6508 size: [[15, 8px], [16, 18px]]
6509 visible: global.sdk_transit_overlay
6514 filter: { kind: [platform] }
6517 size: [[15, 8px], [16, 18px]]
6518 visible: global.sdk_transit_overlay
6523 filter: { kind: [tram_stop], $zoom: { max: 16 } }
6526 size: [[13, 0px], [14, 7px], [15, 8px]]
6527 visible: global.sdk_transit_overlay
6532 filter: { kind: tram_stop, $zoom: { min: 16 } }
6535 size: [[16, 12px], [17, 14px], [18, 18px]]
6538 #offset: [[13, [0, 6px]], [16, [0, 9px]]]
6541 kind: [platform, stop_position]
6544 size: [[13, 8px], [16, 10px], [17, 12px], [18, 18px]]
6547 interactive: global.interactive
6551 stroke: { color: white, width: 4 }
6554 kind: [bus_station, bus_stop]
6558 size: [[13, 12px], [16, 18px]]
6562 interactive: global.interactive
6567 stroke: { color: white, width: 4 }
6574 size: [[13, 8px], [19, 18px]]
6579 kind: [subway_entrance]
6582 sprite: subway_entrance
6583 size: [[17, 12px], [19, 14px]]
6586 #offset: [[17, [0, 6px]], [19, [0, 7px]]] # offset tracks alongside icon size (half icon height)
6588 interactive: global.interactive
6589 text_source: function() { if( feature.ref || feature.name ) { if( feature.ref && feature.name ) { return '[' + feature.ref + ']\n' + feature.name; } else { return feature.name; } } else { return "Entrance"; } }
6593 stroke: { color: white, width: 4 }
6595 # transit-platforms:
6596 # data: { source: mapzen, layer: transit }
6597 # filter: { kind: platform, $zoom: { min: 15 }, $geometry: [polygon,line] }
6600 # visible: global.sdk_transit_overlay
6602 # width: 10m # something fishy here with the #include syntax in v0.7 tangram?
6603 # order: 1000 # this selection should sort above basemap, but grey Zinc color still applies
6607 # visible: global.sdk_transit_overlay
6610 # filter: { $geometry: polygon }
6616 # width: [[15,0px],[16,0.5px],[17,1px],[19,2px]]