1 Author: Geraldine Sarmiento, Nathaniel V. Kelso, Patricio Gonzalez Vivo, Brett Camper, Peter Richardson
4 # Sign up for a Mapzen API key to enjoy higher rate limits
5 # https://mapzen.com/documentation/overview/#developer-accounts-and-api-keys
6 sdk_mapzen_api_key: '' # set this value to your Mapzen API key
9 ux_language: false # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
10 ux_language_fallback: false # l10n language code, trusting OSM in v0.10 tiles, fixed in v1.0 tiles
11 ux_language_text_source: |
13 // 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
14 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
16 ux_language_text_source_boundary_lines: |
18 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'];
19 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'];
21 //if( right.includes(' ') || left.includes(' ') ) {
22 return left + " - " + right;
24 // return right + '\n' + left;
27 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
30 ux_language_text_source_short: |
32 return (global.ux_language && feature['name:short:'+global.ux_language]) || (global.ux_language_fallback && feature['name:short:'+global.ux_language_fallback]) || feature['name:short'];
34 ux_language_text_source_short_proxy_name: |
36 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
37 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'];
38 return short ? name : '';
40 ux_language_text_source_abbreviation: |
42 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
43 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'];
44 return abbrev || name;
46 ux_language_text_source_iata: |
48 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
51 return name + ' (' + feature.iata + ')';
60 ux_language_text_source_ocean: |
62 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
63 name = name.split(' ').join('\n');
64 return name.split('').join(' ');
66 ux_language_text_source_sea: |
68 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
69 name = name.split(' ').join('\n');
70 return name.split('').join(' ');
72 ux_language_text_source_continent_stacked_only: |
74 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
75 return name.split(' ').join('\n');
77 ux_language_text_source_continent: |
79 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'] || '';
80 name = name.split(' ').join('\n');
81 return name.split('').join(' ');
83 ux_language_text_source_road_ref_and_name: |
85 // 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
86 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
89 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
90 if(feature.ref && name) {
91 return (feature.ref + ' ' + name);
97 ux_language_text_source_road_ref_and_name_short: |
99 // 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
100 return (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature.name;
103 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
104 if (feature.ref && (feature.ref.length < 6) && name) {
105 return feature.ref + ' ' + name;
111 ux_language_text_source_piste_advanced: |
113 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
114 return name ? ('◆ ' + name) : '◆';
116 ux_language_text_source_piste_expert: |
118 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
119 return name ? ('◆◆ ' + name) : '◆◆';
121 ux_language_text_source_building_and_address: |
123 var name = (global.ux_language && feature['name:'+global.ux_language]) || (global.ux_language_fallback && feature['name:'+global.ux_language_fallback]) || feature['name'];
124 if (name && feature.addr_housenumber) {
125 return name + '\n' + feature.addr_housenumber;
131 # To facilitate data visualizations several recommended sort orders are provided
133 # Your classic raster map overlay.
134 # Over all line and polygon features.
135 # Under map labels (icons and text), under UI elements
136 # (like routeline and search result pins).
137 sdk_order_over_everything_but_text_0: 490
138 sdk_order_over_everything_but_text_1: 491
139 sdk_order_over_everything_but_text_2: 492
140 sdk_order_over_everything_but_text_3: 493
141 sdk_order_over_everything_but_text_4: 494
142 sdk_order_over_everything_but_text_5: 495
143 sdk_order_over_everything_but_text_6: 496
144 sdk_order_over_everything_but_text_7: 497
145 sdk_order_over_everything_but_text_8: 498
146 sdk_order_over_everything_but_text_9: 499
148 # Your classic "underlay"
149 # Under roads. Above borders, water, landuse, and earth.
150 sdk_order_under_roads_0: 290
151 sdk_order_under_roads_1: 291
152 sdk_order_under_roads_2: 292
153 sdk_order_under_roads_3: 293
154 sdk_order_under_roads_4: 294
155 sdk_order_under_roads_5: 295
156 sdk_order_under_roads_6: 296
157 sdk_order_under_roads_7: 297
158 sdk_order_under_roads_8: 298
159 sdk_order_under_roads_9: 299
162 # Above earth and most landuse.
163 sdk_order_under_water_0: 190
164 sdk_order_under_water_1: 191
165 sdk_order_under_water_2: 192
166 sdk_order_under_water_3: 193
167 sdk_order_under_water_4: 194
168 sdk_order_under_water_5: 195
169 sdk_order_under_water_6: 196
170 sdk_order_under_water_7: 197
171 sdk_order_under_water_8: 198
172 sdk_order_under_water_9: 199
175 # Tip: disable earth layer.
176 sdk_order_under_everything_0: 0
177 sdk_order_under_everything_1: 1
178 sdk_order_under_everything_2: 2
179 sdk_order_under_everything_3: 3
180 sdk_order_under_everything_4: 4
181 sdk_order_under_everything_5: 5
182 sdk_order_under_everything_6: 6
183 sdk_order_under_everything_7: 7
184 sdk_order_under_everything_8: 8
185 sdk_order_under_everything_9: 9
188 # should default to "auto", with SDK overriding it to true or false,
189 # or app logic sets other booleans that triggers auto behavior later
190 sdk_transit_overlay: false
193 sdk_shield_color: [0.506,0.192,0.169]
194 sdk_shield_text_color: white
196 # enable interactivity for key features
197 sdk_interactive: false
199 # default order for basemap features
200 feature_order: function() { return feature.sort_rank; }
203 text_visible_continent: true
204 text_visible_admin: true
205 text_visible_populated_places: true
206 icon_visible_populated_places: true
207 text_visible_neighbourhoods: true
208 text_visible_neighbourhoods_e: true
209 text_visible_building: true # false for default
210 text_visible_address: true # false for default
211 text_visible_water_labels: true
212 text_visible_island: true
213 label_visible_landuse_green: true
214 icon_visible_landuse_green: true # needs work
215 text_visible_landuse_green: true
216 icon_size_green: [[13, 14px], [16, 18px], [18, 19px]] # 0px for no, default, more [[13, 14px], [16, 18px], [18, 19px]]
217 icon_size_green_l: [[13, 14px], [16, 18px], [18, 19px]] # 0px for no, default, more [[14,24px],[16,32px]]
218 label_visible_poi_landuse: true
219 icon_visible_poi_landuse: true # false for default
220 text_visible_poi_landuse: true # false for default
221 label_visible_poi_landuse_e: true
222 icon_visible_poi_landuse_e: true # false for default
223 text_visible_poi_landuse_e: true
224 text_visible_landuse_generic: true # false for default
225 label_visible_station: true # false for default
226 icon_visible_station: true # false for default
227 text_visible_station: true # false for default
228 text_visible_highway: true
229 text_visible_highway_e: true # false for default, false for more
230 text_visible_trunk_primary: true
231 text_visible_trunk_primary_route: true # true by default
232 text_visible_trunk_primary_e2: true # false for default, false for more
233 text_visible_trunk_primary_e: true # false for default, false for more
234 text_visible_secondary: true
235 text_visible_secondary_e: true # false for default, false for more
236 text_visible_tertiary: true
237 text_visible_tertiary_e: true # false for default, false for more
238 text_visible_minor_road: true
239 text_visible_minor_road_e: true
240 text_visible_service_road: true
241 text_visible_path: true
242 text_visible_piste: true
243 text_visible_steps: true
244 text_visible_aerialway: true
245 text_visible_airport_gate: true
246 sdk_road_shields: true
247 text_visible_exits: true
248 text_visible_exits_e: true # false for default, false for more
251 text_fill: [0.300, 0.300, 0.300] # BLACK
252 text_fill2: '#555' # WHITE
253 text_fill_road_e: '#555' # WHITE
254 text_fill_exits: [0.920,0.398,0.340] # motorway junctions, highway_casing1
255 text_fill_building: '#ccc' # WHITE
256 text_fill_address: '#aaa' # HUH
257 text_fill_water: '#4c89b5' # blue
258 text_fill_park: [0.35,0.35,0.35] # black
259 text_fill_beach: [0.35,0.35,0.35] # black
260 text_fill_piste: '#444' # dark gray
261 text_fill_piste_e: '#666' # dark gray early
262 text_fill_shield: white # road shield fill color
263 text_stroke: [0.870,0.870,0.870] # land color
264 text_stroke_water: [0.9, 0.9, 0.9] # water stroke color
265 text_stroke_park: '#bddec5' # park stroke color
266 text_stroke_building: [0.83, 0.83, 0.83] # building stroke color
267 text_stroke_address: [0.85, 0.85, 0.85] # address stroke color
268 text_stroke_road1: [0.9, 0.9, 0.9] # road stroke color highway
269 text_stroke_road2: [0.9, 0.9, 0.9] # road stroke color major road
270 text_stroke_road3: [0.9, 0.9, 0.9] # road stroke color major road route
271 text_stroke_road4: [0.9, 0.9, 0.9] # road stroke color minor road
272 text_stroke_shield: '#D16768' # road shield stroke color &highway_casing1
273 townspot_sprite: townspot-m-rev # depends on land color and text settings
274 text_font_family: 'Open Sans' # branding in asperational Unicode, yo (or Helvetica)
277 highway1: [0.988,0.495,0.439]
278 highway1_e: [0.988,0.495,0.439]
279 highway_link1: [1.000,0.631,0.590]
280 highway_casing1: [0.859,0.859,0.859]
281 highway_tunnel1: [0.800,0.800,0.800]
282 highway_tunnel_casing1: [0.870,0.870,0.870]
283 highway_link_tunnel_casing1: [0.8, 0.8, 0.7]
287 rail2: '#777' # less important rail (service, sidings)
288 major_road1: [1, 1, 1]
289 major_road1b: [1.0,1.0,1.0]
290 major_road1c: white #15%
291 major_road2: [1.0,1.0,1.0]
292 major_road2a: [1.0,1.0,1.0]
293 major_road2b: [1.0,1.0,1.0]
294 major_road3: [1.0,1.0,1.0]
297 major_casing1: [0.859,0.859,0.859] # same as highway_casing1
298 major_casing2: [0.859,0.859,0.859] # zoomed out
299 major_tunnel1: [.870,0.870,0.870] # light orange (major_route1)
300 major_tunnel_casing1: [0.780,0.780,0.780]
301 major_route1: [1.000,0.631,0.590]
302 major_route2: [1.000,0.752,0.730] # zoomed out
303 minor_route: [1.000,0.631,0.590] # same as major_route
304 minor_road1: [0.9,0.9,0.9] # natural earth
305 minor_road2: [0.9,0.9,0.9] # natural earth, same as major_road2
306 minor_road3: [0.9,0.9,0.9]
307 minor_road4: [0.9,0.9,0.9] # zoomed out
308 minor_road5: [0.9,0.9,0.9] # zoomed out, again
309 minor_casing1: white # same as highway_casing1
310 minor_casing2: white # zoomed out
311 minor_tunnel1: [0.8, 0.8, 0.7]
312 minor_tunnel_casing1: white
315 service_road_casing1: [0.770,0.770,0.770]
316 service_road_casing2: white
317 path1: [0.91,0.91,0.91]
318 path2: [0.91,0.91,0.91] # zoomed out
319 path_casing1: [0.875,0.875,0.875]
320 path_bridge_casing1: [0.870,0.870,0.870]
321 path_bridge_casing2: [0.870,0.870,0.870] # zoomed out
322 path_steps1: [0.91,0.91,0.91]
323 path_steps1_b: '#f0ebeb'
324 piste_easy: [0.367,0.750,0.622]
325 piste_intermediate: [0.420,0.678,0.863]
326 piste_advanced: [0.450,0.450,0.450]
327 piste_expert: [0.450,0.450,0.450]
330 country_boundary: [1.0,1.0,1.0]
331 region_boundary: [0.96,0.96,0.96]
332 subregion_boundary: '#bbb'
333 city_wall: [0.682,0.682,0.682]
334 retaining_wall: [0.827,0.808,0.780]
335 snow_fence: [0.827,0.808,0.780]
336 fence: [0.827,0.808,0.780]
339 water1: [0.83, 0.83, 0.83] # water
340 water2: [0.83, 0.83, 0.83] # playa
341 water1_o: '#9dc3de' # water stroke
342 water2_o: '#9dc3de' # water stroke 2
343 earth1: [0.870,0.870,0.870] # land color, used to set scene background color
344 earth1_r: '#666' # land color road
345 earth2: '#e9e4e0' # urban
346 earth2_v: false # urban
347 earth2_e: '#b3b3b3' # urban early
348 earth2_e2: '#b3b3b3' # urban early fade in
349 earth2_e3: '#bbbbbb' # urban early fade in 3
350 earth2_ev: true # urban early visibility
351 green1: [0.140,0.843,0.824] # park
352 green1_r: [0.140,0.843,0.824] # roads in parks
353 green1_b: '#94d8d6' # buildings in parks
354 green1_bo: '#7fc3c1' # buildings in parks, outlines
355 green1_w: '#b7d7bf' # wilderness area
356 green1_ws: '#aed0b6' # wilderness area stroke
357 green1b: [0.80,0.80,0.80] # park
358 green2: [0.547,0.760,0.590] # cemetery
359 green2_r: [0.7,0.7,0.7] # cemetery road
360 green3: [0.000,0.779,0.328] # golf course
361 green4: '#526054' # farm faint
362 green4_v: false # farm faint
363 green5: '#5a695c' # farm
364 green6: '#648560' # nature reserve
365 green7: [0.169,0.651,0.631] # forest
366 green8: [0.123,0.770,0.587] # conservation
367 green9: '#cfe3d4' # forest (landcover)
368 green9_e: '#cfe3d4' # forest (landcover) early
369 green9_v: true # forest (landcover) visibility
370 green10: '#c7d4c0' # sports_centre
371 green11: '#d8ddd0' # minor zoo related AOIs
372 green11_o: '#aec7b5' # minor zoo related AOIs outline
373 orange1: '#bfb08e' # stadium
374 orange2: '#d8ccb0' # pitch (play field)
375 orange3: '#b9a597' # racetrack (play field)
376 brown1: [0.814,0.692,0.570] # university
377 brown1_r: [0.814,0.692,0.570] # roads in university
378 brown1_b: [.65, .65, .65] # university buildings
379 brown1_bo: [.8, .8, .8] # university building outlines
380 brown2: '#ada497' # school
381 brown3: '#c7b7a2' # playground
382 red1: [0.840,0.503,0.541] # hospital
383 red1_r: [0.840,0.503,0.541] # roads in hospital
384 red1_b: [.65, .65, .65] # hospital buildings
385 red1_bo: [.8, .8, .8] # hospital building outlines
386 grey1: '#717171' # pedestrian, retail, airport apron, parking, church
387 grey1_e: '#cac6c4' # pedestrian, retail, airport apron, parking, church early zoom 14
388 grey1_v: true # pedestrian, retail, airport apron, parking, church
389 grey2: [0.5, 0.5, 0.5] # airport runway
390 grey3: grey # railway
391 grey4: '#ffc52a' # airport taxiway
392 grey5: '#ffc52a' # airport taxiway
393 grey6: '#c6c6c6' # industrial
394 grey6_b: [.65, .65, .65] # industrial buildings
395 grey6_bo: [.8, .8, .8] # industrial building outlines
396 grey7: '#ecebe9' # pedestrian, match minor road / path color
397 grey7_v: true # pedestrian visibility
398 grey8: '#ecebe9' # winter sports
399 grey8_v: true # winter sports visibility
400 grey9: [.7, .0, .0, 0.5] # [.7, .7, .7] # transit platform
401 grey9_o: [.5, .5, .5] # transit platform outline
402 grey9_v: true # transit platform visibility
403 grey10: '#d4cce6' # generic major landuse (theme park, resort, aquarium, winery)
404 grey10_o: '#bcb9c5' # generic major landuse outline
405 grey11: '#d7d7d7' # generic minor landuse (attraction, artwork)
406 grey11_o: '#cccccc' # generic minor landuse outline
407 grey12: '#cfcfcf' # generic minor amusements (roller coasters, rides, slide, carousel)
408 grey12_o: '#c5c5c5' # generic minor amusements
409 purple: '#f0e1e1' # airport
410 purple_v: false # airport
411 purple_b: '#c2c3c4' # airport buildings
412 purple_bo: '#969798' # airport buildings outline
413 mystry1: '#bfb08e' # recreation ground
414 yellow1: '#e7eda8' # beach
415 building1: [0.784, 0.784, 0.784] # building
416 building2: [.860, .860, .860] # building stroke
417 building_o: 5 # building stroke order
418 building_e: true # building stroke order early
419 sdk_building_extrude: true # building extrusion toggle
420 building_extrude_height: | # building extrude height logic
421 function() { return feature.height || 20; }
425 url: images/bubble-wrap@2x.png
426 #url: https://raw.githubusercontent.com/tangrams/bubble-wrap/gh-pages/images/bubble-wrap%402x.png
429 # define sprites: [x origin, y origin, width, height]
430 'US:CA-1char': [350, 694, 82, 90]
431 'US:CA-2char': [826, 694, 92, 92]
432 'US:CA-3char': [706, 694, 112, 92]
433 'US:CA-4char': [574, 694, 124, 92]
434 'US:CA-5char': [438, 694, 128, 92]
435 'US:I-1char': [686, 790, 90, 100]
436 'US:I-2char': [288, 894, 100, 100]
437 'US:I-3char': [148, 894, 134, 100]
438 'US:I-4char': [0, 894, 140, 100]
439 'US:I-5char': [784, 790, 152, 100]
440 'US:NY-1char': [560, 602, 72, 88]
441 'US:NY-2char': [812, 510, 88, 88]
442 'US:NY-3char': [700, 510, 104, 86]
443 'US:NY-4char': [576, 510, 116, 88]
444 'US:NY-5char': [448, 510, 120, 86]
445 'US:PA-1char': [480, 602, 72, 88]
446 'US:PA-2char': [384, 602, 88, 88]
447 'US:PA-3char': [264, 602, 112, 88]
448 'US:PA-4char': [136, 602, 120, 88]
449 'US:PA-5char': [0, 602, 128, 88]
450 'US:US-1char': [480, 790, 88, 94]
451 'US:US-2char': [576, 790, 104, 94]
452 'US:US-3char': [336, 790, 138, 100]
453 'US:US-4char': [172, 790, 158, 100]
454 'US:US-5char': [0, 792, 164, 98]
455 airport: [870, 0, 38, 38]
456 aerodrome: [870, 0, 38, 38]
457 aquarium: [870, 204, 38, 38]
458 atm: [46, 204, 38, 38]
459 bakery: [686, 204, 38, 38]
460 bank: [92, 204, 38, 38]
461 category-predicate-money: [92, 204, 38, 38]
462 bar: [368, 204, 38, 38]
463 pub: [368, 204, 38, 38]
464 category-predicate-drink: [368, 204, 38, 38]
465 baseball: [506, 84, 38, 38]
466 basketball: [460, 84, 38, 38]
467 beach: [644, 84, 38, 38]
468 bench: [548, 0, 38, 38]
469 bicycle: [0, 204, 38, 38]
470 bicycle_rental: [0, 204, 38, 38]
471 bicycle_rental_station: [0, 204, 38, 38]
472 bicycle_parking: [772, 126, 38, 38]
473 biergarten: [458, 246, 38, 38]
474 brewery: [458, 246, 38, 38]
475 books: [954, 126, 38, 38]
476 bridge: [920, 84, 38, 38]
477 buddhist: [782, 84, 38, 38]
478 building: [552, 204, 38, 38]
479 hangar: [552, 204, 38, 38]
480 nursing_home: [552, 204, 38, 38]
481 manor: [552, 204, 38, 38]
482 apartments: [552, 204, 38, 38]
483 care_home: [552, 204, 38, 38]
484 bus_station: [778, 0, 38, 38]
485 bus_stop: [778, 0, 38, 38]
486 butcher: [920, 42, 38, 38]
487 cafe: [640, 204, 38, 38]
488 camp_site: [828, 84, 38, 38]
489 summer_camp: [828, 84, 38, 38]
490 caravan_site: [828, 84, 38, 38]
491 capital-l: [726, 246, 32, 32]
492 capital-m: [694, 246, 24, 24]
493 capital-s: [666, 246, 20, 20]
494 capital-xl: [814, 246, 40, 40]
495 capital-xs: [642, 246, 16, 16]
496 car: [908, 126, 38, 38]
497 category-namespace-mobility: [908, 126, 38, 38]
498 category-predicate-mobility: [908, 126, 38, 38]
499 car_repair: [138, 204, 38, 38]
500 car_sharing: [594, 0, 38, 38]
501 castle: [414, 42, 38, 38]
502 fort: [414, 42, 38, 38]
503 cemetery: [736, 84, 38, 38]
504 grave_yard: [736, 84, 38, 38]
505 christian: [230, 126, 38, 38]
506 cinema: [916, 204, 38, 38]
507 clothes: [962, 204, 38, 38]
508 fashion: [962, 204, 38, 38]
509 college: [0, 246, 38, 38]
510 university: [0, 246, 38, 38]
511 confectionery: [136, 246, 38, 38]
512 convenience: [46, 84, 38, 38]
513 county_shield-1char: [640, 602, 72, 72]
514 county_shield-2char: [256, 694, 88, 72]
515 county_shield-3char: [144, 694, 104, 72]
516 county_shield-4char: [0, 694, 136, 72]
517 county_shield-5char: [720, 602, 160, 72]
518 courthouse: [364, 0, 38, 38]
519 department_store: [862, 126, 38, 38]
520 drinking_water: [412, 246, 38, 38]
521 dry_cleaning: [0, 84, 38, 38]
522 electronics: [726, 126, 38, 38]
523 computer: [726, 126, 38, 38]
524 estate_agent: [138, 42, 38, 38]
525 factory: [506, 204, 38, 38]
526 industrial: [506, 204, 38, 38]
527 chimney: [506, 204, 38, 38]
528 substation: [506, 204, 38, 38]
529 wastewater_plant: [506, 204, 38, 38]
530 works: [506, 204, 38, 38]
531 water_works: [506, 204, 38, 38]
532 plant: [506, 204, 38, 38]
533 generator: [506, 204, 38, 38]
534 category-predicate-industry: [506, 204, 38, 38]
535 fast_food: [320, 246, 38, 38]
536 ferry: [824, 0, 38, 38]
537 ferry_terminal: [824, 0, 38, 38]
538 fire_station: [318, 0, 38, 38]
539 fitness: [874, 42, 38, 38]
540 fitness_station: [874, 42, 38, 38]
541 florist: [184, 126, 38, 38]
542 forest: [182, 246, 38, 38]
543 natural_forest: [182, 246, 38, 38]
544 nature_reserve: [182, 246, 38, 38]
545 conservation: [182, 246, 38, 38]
546 protected_area: [182, 246, 38, 38]
547 grass: [182, 246, 38, 38]
548 fountain: [404, 126, 38, 38]
549 fuel: [90, 246, 38, 38]
550 gallery: [778, 204, 38, 38]
551 garden: [690, 84, 38, 38]
552 generic: [596, 246, 38, 38]
553 category-namespace-other: [596, 246, 38, 38]
554 category-predicate-addressing: [596, 246, 38, 38]
555 generic_shield-1char: [928, 290, 72, 72]
556 generic_shield-2char: [488, 422, 98, 72]
557 generic_shield-3char: [348, 422, 132, 72]
558 generic_shield-4char: [188, 422, 152, 72]
559 generic_shield-5char: [0, 422, 180, 72]
560 gift: [138, 126, 38, 38]
561 golf_course: [414, 84, 38, 38]
562 government: [276, 204, 38, 38]
563 townhall: [276, 204, 38, 38]
564 public: [276, 204, 38, 38]
565 embassy: [276, 204, 38, 38]
566 category-predicate-civic: [276, 204, 38, 38]
567 hairdresser: [46, 42, 38, 38]
568 hardware: [828, 42, 38, 38]
569 doityourself: [828, 42, 38, 38]
570 painter: [828, 42, 38, 38]
571 historical: [92, 126, 38, 38]
572 hospital: [184, 0, 38, 38]
573 category-namespace-health: [184, 0, 38, 38]
574 category-predicate-health: [184, 0, 38, 38]
575 hotel: [732, 0, 38, 38]
576 motel: [732, 0, 38, 38]
577 hostel: [732, 0, 38, 38]
578 category-predicate-sleep: [732, 0, 38, 38]
579 ice_cream: [504, 246, 38, 38]
580 information: [550, 246, 38, 38]
581 jewelry: [736, 42, 38, 38]
582 jewish: [46, 0, 38, 38]
583 landmark: [272, 0, 38, 38]
584 memorial: [272, 0, 38, 38]
585 monument: [272, 0, 38, 38]
586 tower: [272, 0, 38, 38]
587 beacon: [272, 0, 38, 38]
588 laundry: [690, 42, 38, 38]
589 library: [0, 0, 38, 38]
590 light_rail: [686, 0, 38, 38]
591 tram_stop: [686, 0, 38, 38]
592 lighthouse: [276, 84, 38, 38]
593 liquor: [634, 126, 38, 38]
594 alcohol: [634, 126, 38, 38]
595 mall: [644, 42, 38, 38]
596 marina: [230, 204, 38, 38]
597 dock: [230, 204, 38, 38]
598 mineshaft: [782, 42, 38, 38]
599 quarry: [782, 42, 38, 38]
600 adit: [782, 42, 38, 38]
601 mobile_phone: [506, 42, 38, 38]
602 museum: [46, 126, 38, 38]
603 observatory: [46, 126, 38, 38]
604 music: [368, 42, 38, 38]
605 muslim: [92, 0, 38, 38]
606 newspaper: [322, 42, 38, 38]
607 kiosk: [322, 42, 38, 38]
608 office: [598, 84, 38, 38]
609 insurance: [598, 84, 38, 38]
610 company: [598, 84, 38, 38]
611 category-predicate-service: [598, 84, 38, 38]
612 optician: [276, 42, 38, 38]
613 park: [358, 126, 38, 38]
614 national_park: [358, 126, 38, 38]
615 battlefield: [358, 126, 38, 38]
616 protected_area: [358, 126, 38, 38]
617 category-predicate-nature: [358, 126, 38, 38]
618 park-l: [276, 126, 74, 74]
619 parking: [818, 126, 38, 38]
620 peak: [230, 84, 38, 38]
621 pet: [230, 42, 38, 38]
622 pharmacy: [966, 42, 38, 38]
623 photographic_laboratory: [184, 42, 38, 38]
624 photographer: [184, 42, 38, 38]
625 pier: [640, 0, 38, 38]
626 place_of_worship: [414, 204, 38, 38]
627 chapel: [414, 204, 38, 38]
628 wayside_shrine: [414, 204, 38, 38]
629 category-predicate-religion: [414, 204, 38, 38]
630 playground: [460, 42, 38, 38]
631 police: [226, 0, 38, 38]
632 post_office: [460, 204, 38, 38]
633 recycling: [92, 42, 38, 38]
634 restaurant: [228, 246, 38, 38]
635 category-namespace-eat_and_drink: [228, 246, 38, 38]
636 category-predicate-eat: [228, 246, 38, 38]
637 retail: [598, 42, 38, 38]
638 store: [598, 42, 38, 38]
639 category-namespace-shop_and_service: [598, 42, 38, 38]
640 category-predicate-shop: [598, 42, 38, 38]
641 ruin: [502, 0, 38, 38]
642 ruins: [502, 0, 38, 38]
643 archaeological_site: [502, 0, 38, 38]
644 school: [552, 84, 38, 38]
645 kindergarten: [552, 84, 38, 38]
646 category-namespace-education_and_religion: [552, 84, 38, 38]
647 category-predicate-education: [552, 84, 38, 38]
648 sdk_shield-1char: [592, 422, 84, 84]
649 sdk_shield-2char: [328, 510, 112, 84]
650 sdk_shield-3char: [176, 510, 144, 84]
651 sdk_shield-4char: [0, 510, 168, 84]
652 sdk_shield-5char: [684, 422, 192, 84]
653 shoemaker: [552, 42, 38, 38]
654 ski: [450, 126, 38, 38]
655 winter_sports: [450, 126, 38, 38]
656 slipway: [138, 84, 38, 38]
657 soccer: [368, 84, 38, 38]
658 sports: [0, 42, 38, 38]
659 sports_centre: [322, 204, 38, 38]
660 pitch: [322, 204, 38, 38]
661 recreation_ground: [322, 204, 38, 38]
662 spring: [322, 84, 38, 38]
663 hot_spring: [322, 84, 38, 38]
664 stadium: [542, 126, 38, 38]
665 subway_entrance: [456, 0, 38, 38]
666 supermarket: [680, 126, 38, 38]
667 greengrocer: [680, 126, 38, 38]
668 swimming_pool: [588, 126, 38, 38]
669 tailor: [962, 0, 38, 38]
670 taqueria: [274, 246, 38, 38]
671 tennis: [496, 126, 38, 38]
672 theatre: [732, 204, 38, 38]
673 category-predicate-fun: [732, 204, 38, 38]
674 theme_park: [0, 126, 38, 38]
675 amusement_ride: [0, 126, 38, 38]
676 toilets: [874, 84, 38, 38]
677 townspot-l: [132, 288, 32, 32]
678 townspot-l-rev: [942, 246, 32, 32]
679 townspot-m: [100, 288, 24, 24]
680 townspot-m-rev: [910, 246, 24, 24]
681 townspot-s: [72, 288, 20, 20]
682 townspot-s-rev: [882, 246, 20, 20]
683 townspot-xl: [172, 288, 40, 40]
684 townspot-xl-rev: [0, 290, 40, 40]
685 townspot-xs: [48, 288, 16, 16]
686 townspot-xs-rev: [862, 246, 12, 12]
687 toys: [916, 0, 38, 38]
688 traffic_signals: [46, 246, 38, 38]
689 train_station: [410, 0, 38, 38]
690 station: [410, 0, 38, 38]
691 train: [410, 0, 38, 38]
692 category-predicate-transport: [410, 0, 38, 38]
693 ux-current-location: [514, 290, 88, 88]
694 ux-locate-off: [848, 290, 72, 72]
695 ux-locate-on: [768, 290, 72, 72]
696 ux-route-arrow: [220, 290, 128, 128]
697 ux-route-start: [434, 290, 72, 92]
698 ux-route-stop: [356, 290, 72, 92]
699 ux-search-active: [608, 290, 72, 108]
700 ux-search-inactive: [688, 290, 72, 108]
701 ux-transit-stop: [766, 248, 42, 36]
702 veterinary: [138, 0, 38, 38]
703 viewpoint: [824, 204, 38, 38]
704 category-namespace-do_and_see: [824, 204, 38, 38]
705 category-predicate-attraction: [824, 204, 38, 38]
706 vineyard: [184, 204, 38, 38]
707 volcano: [92, 84, 38, 38]
708 water_park: [184, 84, 38, 38]
709 wine: [366, 246, 38, 38]
710 winery: [594, 204, 38, 38]
711 zoo: [966, 84, 38, 38]
714 url: images/building-grid.gif
715 #url: https://raw.githubusercontent.com/tangrams/bubble-wrap/gh-pages/images/building-grid.gif
720 - weight: 300 # Light
721 url: fonts/OpenSans-Light.woff
722 - weight: normal # Regular
723 url: fonts/OpenSans-Regular.woff
724 - weight: normal # Regular
726 url: fonts/OpenSans-Italic.woff
727 - weight: 600 # Semi Bold
728 url: fonts/OpenSans-Semibold.woff
729 - weight: 600 # Semi Bold
731 url: fonts/OpenSans-SemiboldItalic.woff
733 url: fonts/OpenSans-Bold.woff
736 #url: https://fonts.gstatic.com/s/montserrat/v7/zhcz-_WihjSQC0oHJ9TCYL3hpw3pgy2gAi-Ip7WPMi0.woff
737 url: fonts/Montserrat-Regular.woff
740 #url: https://fonts.gstatic.com/s/varela/v7/maB5vWJo0EAVzvHPjBkLM-vvDin1pK8aKteLpeZ5c0A.woff
741 url: fonts/Varela-Regular.woff
744 #url: https://fonts.gstatic.com/s/quicksand/v6/sKd0EMYPAh5PYCRKSryvW7O3LdcAZYWl9Si6vvxL-qU.woff
745 url: fonts/Quicksand-Regular.woff
749 # EraserMaps the app only supports MVT format tiles
751 url: https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.mvt
752 #url: http://tile.dev.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.mvt
753 #url: //localhost:8080/vector/all/{z}/{x}/{y}.mvt
754 # road labels in Tangram JS are broken when overzooming, set max_zoom: 18 to preview fix
756 api_key: global.sdk_mapzen_api_key
759 # # Only enable this for local debug, should not be enabled for prod (app inserts these at runtime)
760 # # These are all in San Francisco, California
762 # # Current location gem
763 # mz_current_location:
765 # url: https://gist.githubusercontent.com/anonymous/9e9588228b0a604264a2/raw/b28be49bea0b7feb859eb65b588c28e9fee5ae2c/map.geojson
770 # # url: https://gist.githubusercontent.com/anonymous/30c6c1a75c168d91d90c/raw/92bfe55e622766d250b1f2f5d17bdc7c26acb956/map.geojson
772 # url: https://gist.githubusercontent.com/anonymous/9a610ebda6fe4be7bccc/raw/8d217e43f2412d48d01534ba115f1e42dac72e68/map.geojson
773 # # Dashed route line
776 # url: https://gist.githubusercontent.com/anonymous/d73b851c64c3e5fbfc2754aa32f44c10/raw/938ae435776e176919c4797bed1465a92e403ef3/map.geojson
777 # # Transit route line
778 # mz_route_line_transit:
780 # url: https://gist.githubusercontent.com/anonymous/71ae88cbc6d62c4d141ecd6a61060050/raw/2254bbc18243f5dc609e663a580c9412a7447936/map.geojson
781 # # Pin at start of route
784 # url: https://gist.githubusercontent.com/anonymous/5262969cb7549ea69221/raw/be03f233fa323d9b5cf50ef1d8e89a1faa3750f1/map.geojson
785 # # Pin at end of route
786 # mz_route_destination:
788 # url: https://gist.githubusercontent.com/anonymous/dbae9635dfe46796490e/raw/df55c318635a7d91b309ed40754d4738a292fd38/map.geojson
789 # # Arrow for current route location
792 # url: https://gist.githubusercontent.com/anonymous/36613092be6e2aa004fd/raw/f753d13069425199e1dea1b449ef67d723f6510e/map.geojson
793 # # Dots for transit stops in route preview
794 # mz_route_transit_stop:
796 # url: https://gist.githubusercontent.com/anonymous/b9f16bca4a804f50faf71277d52ee4ab/raw/db13e4e765fa1ac8844b8ba02f4a0f66fe772907/map.geojson
797 # # Pins showing search result locations
800 # url: https://gist.githubusercontent.com/anonymous/57dc09eeb120919f76de/raw/43426217da3c2bae0522dc4257aaa61e4df3981e/map.geojson
801 # # Default point styling (SDK)
804 # url: https://gist.githubusercontent.com/anonymous/16324c771edfce45be0721390389b878/raw/7dbaebf17da7da8562e6c6f8768bc8cff83efa88/map.geojson
805 # # Default shield styling (SDK)
808 # url: https://gist.githubusercontent.com/nvkelso/3c08dba1eced4d01df98c1a9a7801162/raw/d83a5a396fc7b22309b8ca89336ad2dcfff6c452/map.geojson
809 # # Default line styling (SDK)
812 # url: https://gist.githubusercontent.com/anonymous/26f4e8b6b34b2617b5d5533d89decb39/raw/df8e180ab4f7f19448014dccc4a755f7cfa20003/map.geojson
813 # # Default polygon styling (SDK)
814 # mz_default_polygon:
816 # url: https://gist.githubusercontent.com/anonymous/88235c795bb44b8c45150bdd5561f947/raw/71d4fab97b6513833bf1a589167119e6169ef86d/map.geojson
826 dash_background_color: [0.808,0.860,0.851]
830 dash_background_color: [0.808,0.860,0.851]
834 dash_background_color: [0.867, 0.867, 0.867]
839 // Varying to be added to both vertex and fragment shaders
841 #ifdef TANGRAM_FRAGMENT_SHADER
847 v_pos = modelPosition().xy;
850 extensions: OES_standard_derivatives
853 float aastep(float threshold, float value) {
854 #ifdef TANGRAM_FRAGMENT_SHADER
855 #ifdef TANGRAM_EXTENSION_OES_standard_derivatives
856 float afwidth = length(vec2(dFdx(value), dFdy(value))) * 0.70710678118654757;
857 return smoothstep(threshold - afwidth, threshold + afwidth, value);
859 return step(threshold, value);
862 return step(threshold, value);
866 mix: tools-tilecoords
870 #ifdef TANGRAM_FRAGMENT_SHADER
871 bool grid(vec2 st, float res, float press) {
872 vec2 grid = fract(st * res);
873 return (grid.x < res * press) || (grid.y < res * press);
875 float TileGrid(float res) {
876 vec2 st = TileCoords() * 100. * res;
878 float press = 0.4 + (1.0 - fract(u_map_position.z)) * 0.1;
879 if (grid(st, 0.01, press)) { pct += 0.5; }
880 if (grid(st, 0.1, press)) { pct += 0.15; }
884 return mix(TileGrid(1.), TileGrid(2.), fract(u_map_position.z));
893 color.rgb = vec3(0.899, 0.95, 1.0);
894 color.rgb = mix(color.rgb, vec3(0.654,0.856,0.896), TileGrid());
902 float pulse(float x, float p, float w) {
904 if (x > w) { return 0.0; }
906 return (1.0 - x * x * (3.0 - 2.0 * x));
909 // Comment/Uncomment to fix the line to the border
910 width *= 1.0 - v_texcoord.x;
912 vec2 st = v_texcoord.xy;
913 float pattern = aastep(.5, pulse(st.x, .75, .15) + pulse(st.x, .4, .10) + pulse(st.x, .1, .1));
914 color.rgb = mix(color.rgb, vec3(0.675,0.855,0.886), pattern);
919 // get distance field of a Circle
920 // ================================
921 float circleDF (vec2 st) {
929 // Repeats a coordinate space (st) in diferent brick-like tiles
930 // ================================
931 vec2 brick(vec2 st, float zoom){
933 // Here is where the offset is happening
934 st.x += step(1., mod(st.y, 2.0)) * 0.5;
938 mix: [tools-tilecoords, tiling-brick, shapes-circle, tools-aastep]
942 #ifdef TANGRAM_FRAGMENT_SHADER
943 float TileDots(float scale, float size) {
944 vec2 tc = TileCoords() * scale * pow(2., floor(u_map_position.z) - abs(u_tile_origin.z));
945 vec2 IN = brick(tc, 2.);
946 float A = circleDF(vec2(0.5) - IN) * 1.8;
948 if (u_map_position.z < 18.) {
949 vec2 OUT = fract(tc * 2.);
950 float B = circleDF(vec2(0.25) - OUT) * 7.;
951 B = min(B, circleDF(vec2(0.75, 0.25) - OUT) * 7.);
952 B = min(B, circleDF(vec2(0.50, 0.75) - OUT) * 7.);
953 B = min(B, circleDF(vec2(0.00, 0.75) - OUT) * 7.);
954 B = min(B, circleDF(vec2(1.00, 0.75) - OUT) * 7.);
955 d = mix(A, B, pow(fract(u_map_position.z), 10.));
959 return aastep(size, d);
968 color.rgb = mix(color.rgb, vec3(0.850), TileDots(45., 0.1));
969 // size was set to 35 previously, now 45
977 color.rgb = mix(vec3(0.850), color.rgb, TileDots(45., .21));
986 vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
987 vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
988 vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
989 float d = q.x - min(q.w, q.y);
991 return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
995 vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
996 vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
997 return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
1004 // scale buildings based on zoom
1005 float zoom = u_map_position.z;
1006 float min = .1; // minimum building scale
1007 float midpoint = 16.; // middle of zoom range
1008 float inspeed = .1; // number of zooms to scale buildings up
1009 float outspeed = 2.; // number of zooms to scale buildings back down
1012 if (zoom >= midpoint) {
1013 e = (zoom - midpoint) / (outspeed * .2);
1015 e = abs(zoom - midpoint) / inspeed;
1017 position.z *= ((1. - min) / (1. + (exp(e)))) + min;
1022 mix: [hsv, scale-buildings]
1026 u_tex_grid: building-grid
1028 WALL_TINT: vec3(1., 3., .800)
1031 if (dot(vec3(0., 0., 1.), worldNormal()) < .5) {
1033 color.rgb = hsv2rgb(rgb2hsv(color.rgb) * WALL_TINT);
1034 color.rgb = mix(color.rgb, vec3(0.),
1035 texture2D(u_tex_grid, v_texcoord).a);
1040 mix: scale-buildings
1045 outline_transparent:
1048 polygons_transparent:
1058 ux-route-line-overlay:
1062 ux-route-line-dash-overlay:
1067 ux-transit-line-overlay:
1071 ux-location-gem-overlay:
1079 interactive: global.sdk_interactive
1085 interactive: global.sdk_interactive
1091 interactive: global.sdk_interactive
1098 sdk-polygon-overlay:
1105 color: global.earth1
1108 # Map overlays for styling the server response (using special source layer names) for route line, current location, and search result pins
1110 data: { source: mz_route_line }
1112 ux-route-line-overlay:
1115 width: [[0,3.5px],[5,5px],[9,7px],[10,6px],[11,6px],[13,8px],[14,9px],[15,10px],[16,11px],[17,12px],[18,10px]]
1117 data: { source: mz_dash_line }
1119 ux-route-line-dash-overlay:
1122 width: [[2,2px],[5,2.5px],[11,3px],[16,7px],[17,9px]]
1123 mz_route_line_transit:
1124 data: { source: mz_route_line_transit }
1126 ux-transit-line-overlay:
1127 # each transit route segment could be a different "line" each with it's own color
1128 # but some transit lines don't define a color, in those cases default to blue
1129 # and since the color is coming from Transit.land they call it "color" instead of "colour"
1130 color: function() { return feature.color || '#06a6d4'; }
1132 width: [[0,3.5px],[5,5px],[9,7px],[10,6px],[11,6px],[13,8px],[14,9px],[15,10px],[16,11px],[17,12px],[18,10px]]
1133 mz_current_location_gem:
1134 data: { source: mz_current_location }
1136 ux-location-gem-overlay:
1137 sprite: ux-current-location
1140 transition: { show: { time: 0s }, hide: { time: 0s } }
1142 data: { source: mz_route_location }
1144 ux-location-gem-overlay:
1145 sprite: ux-route-arrow
1148 transition: { show: { time: 0s }, hide: { time: 0s } }
1150 data: { source: mz_route_start }
1153 interactive: global.sdk_interactive
1155 sprite: ux-route-start
1159 transition: { show: { time: 0s }, hide: { time: 0s } }
1160 mz_route_destination:
1161 data: { source: mz_route_destination }
1164 interactive: global.sdk_interactive
1166 sprite: ux-route-stop
1170 transition: { show: { time: 0s }, hide: { time: 0s } }
1171 mz_route_transit_stop:
1172 data: { source: mz_route_transit_stop }
1175 sprite: ux-transit-stop
1178 transition: { show: { time: 0s }, hide: { time: 0s } }
1180 data: { source: mz_search_result }
1183 interactive: global.sdk_interactive
1184 sprite: ux-search-active
1188 transition: { show: { time: 0s }, hide: { time: 0s } }
1190 filter: { state: inactive }
1193 sprite: ux-search-inactive
1195 data: { source: mz_dropped_pin }
1198 sprite: ux-search-active
1202 transition: { show: { time: 0s }, hide: { time: 0s } }
1204 # Used by the SDK to place point, line, and polygon overlays on the map
1206 data: { source: mz_default_point }
1209 interactive: global.sdk_interactive
1210 sprite: ux-search-active
1214 transition: { show: { time: 0s }, hide: { time: 0s } }
1216 data: { source: mz_default_shield }
1219 interactive: global.sdk_interactive
1222 if( feature.shield_text ) {
1223 return ('sdk_shield-' + feature.shield_text.length + 'char');
1225 return ('sdk_shield-' + feature.name.length + 'char');
1228 sprite_default: sdk_shield-1char
1229 color: global.sdk_shield_color
1231 transition: { show: { time: 0s }, hide: { time: 0s } }
1233 # offset: [0px, -1px]
1236 if( feature.shield_text ) {
1237 return feature.shield_text;
1239 return feature.name;
1245 fill: global.sdk_shield_text_color
1247 size: [[7,7px],[12,8px],[16,11px]]
1252 if( feature.shield_text ) {
1253 return (feature.shield_text.length === 1);
1255 return (feature.name.length === 1);
1260 size: [[6,[16px,16px]],[13,[18px,18px]],[16,[21px,21px]]]
1264 if( feature.shield_text ) {
1265 return (feature.shield_text.length === 2);
1267 return (feature.name.length === 2);
1272 size: [[6,[21px,16px]],[13,[24px,18px]],[16,[28px,21px]]]
1276 if( feature.shield_text ) {
1277 return (feature.shield_text.length === 3);
1279 return (feature.name.length === 3);
1284 size: [[6,[27px,16px]],[13,[31px,18px]],[16,[36px,21px]]]
1288 if( feature.shield_text ) {
1289 return (feature.shield_text.length === 4);
1291 return (feature.name.length === 4);
1296 size: [[6,[32px,16px]],[13,[36px,18px]],[16,[41px,21px]]]
1300 if( feature.shield_text ) {
1301 return (feature.shield_text.length === 5);
1303 return (feature.name.length === 5);
1308 size: [[6,[37px,16px]],[13,[41px,18px]],[16,[48px,21px]]]
1309 # this is kinda a hack
1313 if( feature.shield_text ) {
1314 return (feature.shield_text.length > 5);
1316 return (feature.name.length > 5);
1323 data: { source: mz_default_line }
1330 data: { source: mz_default_polygon }
1332 sdk-polygon-overlay:
1333 color: [0.02,0.65,0.82,0.5] #'#06b1e2'
1342 data: { source: mapzen, layer: water }
1345 order: global.feature_order
1346 #color: global.water1
1352 color: global.water1
1356 - kind: [lake, water, riverbank, reservoir, swimming_pool]
1358 # limit show smaller landuse areas to higher zooms
1359 - { $zoom: { min: 1 }, area: { min: 40000000000 } }
1360 - { $zoom: { min: 2 }, area: { min: 20000000000 } }
1361 # some weird natural earth scale set transition
1362 - { $zoom: { min: 3 }, area: { min: 80000000000 } }
1363 - { $zoom: { min: 4 }, area: { min: 5000000000 } }
1364 - { $zoom: { min: 5 }, area: { min: 700000000 } }
1365 - { $zoom: { min: 6 }, area: { min: 500000000 } }
1366 - { $zoom: { min: 7 }, area: { min: 160000000 } }
1367 - { $zoom: { min: 8 }, area: { min: 40000000 } }
1368 - { $zoom: { min: 9 }, area: { min: 10000000 } }
1369 - { $zoom: { min: 10 }, area: { min: 8000000 } }
1370 - { $zoom: { min: 11 }, area: { min: 2000000 } }
1371 - { $zoom: { min: 12 }, area: { min: 200000 } }
1372 - { $zoom: { min: 13 }, area: { min: 100000 } }
1373 - { $zoom: { min: 14 }, area: { min: 2000 } }
1374 - { $zoom: { min: 15 } }
1377 color: global.water1
1379 filter: { not: { kind: [ocean, lake, water, reservoir, swimming_pool, playa] }, $zoom: { min: 11 }, area: { min: 100 } }
1382 color: global.water1
1384 filter: { kind: playa }
1387 order: function() { return feature.sort_rank + 1; }
1388 color: global.water2 #[0.870,0.870,0.870]
1389 water-boundary-ocean-early:
1390 filter: { boundary: true, kind: ocean, $zoom: {min: 1, max: 17} }
1394 order: global.feature_order
1395 color: [[9,[0.396,0.833,0.920]],[10,[0.886,0.937,0.988]]]
1396 width: [[9,0.25px],[10,2px],[11,3px],[13,4px],[15,6px]]
1399 color: [[1,[0.698,0.800,0.820]],[11,[0.631,0.773,0.800]],[14,[0.543,0.740,0.780]]]
1400 width: [[1,0.25px],[6,0.5px],[7,0.75px],[9,0.75px],[10,1px]]
1401 water-boundary-ocean-late:
1402 filter: { boundary: true, kind: ocean, $zoom: {min: 17} }
1406 color: [[0,[0.886,0.937,0.988]]]
1408 water_boundaries-not-ocean:
1409 filter: { boundary: true, not: { kind: ocean }, $zoom: { min: 8 } }
1412 order: global.feature_order
1413 # color: [[8,[0.635,0.737,0.753]],[13,[0.635,0.737,0.753]],[14,[0.569,0.722,0.749]],[15,[0.397,0.743,0.809]]]
1414 color: [[8,[0.749,0.831,0.867]],[12,[0.698,0.788,0.816]],[13,[0.698,0.784,0.812]],[14,[0.627,0.788,0.831]],[17,[0.643,0.824,0.851]]]
1415 width: [[8,0.5px],[10,0.5px],[11,0.5px],[12,0.75px],[13,1px],[14,1px],[15,1px],[16,1px],[17,1px]]
1418 color: [0.886,0.937,0.988]
1419 #width: [[9,0px],[10,1.5px],[11,1px],[12,1.5px],[13,1.6px],[14,2px],[15,2px],[16,3px],[18,4px]]
1420 width: [[11,0px],[12,1.2px],[13,1.6px],[14,2px],[15,2px],[16,3px],[18,4px]]
1422 filter: { $zoom: { min: 14 } }
1427 # river boundaries like the thames in london, la seine in paris
1428 filter: { kind: riverbank }
1431 color: [[8,[0.667,0.792,0.824]],[11,[0.698,0.808,0.835]],[13,[0.710,0.796,0.824]],[14,[0.522,0.792,0.855]]]
1432 width: [[9,0.5px],[10,0.75px],[11,0.75px],[12,0.8px],[13,1px],[14,1px],[15,1px],[16,1px],[17,1.5px]]
1434 #river center lines, not boundaries for polygons
1435 filter: { kind: [river,canal,stream,dam,ditch,drain], $zoom: { min: 11 }, not: { is_tunnel: true } }
1438 order: global.feature_order
1439 color: [[11,[0.753,0.820,0.835]],[12,[0.710,0.800,0.824]],[13,[0.886,0.937,0.988]]]
1440 width: [[8,0px],[10,0px],[11,0.75px],[12,1px],[13,1px],[14,2px],[15,3px],[16,4px],[17,5px]]
1443 color: [[11,[0.671,0.788,0.812]],[13,[0.710,0.800,0.824]],[14,[0.635,0.812,0.843]]]
1444 width: [[9,0px],[11,0px],[12,0px],[13,0.5px],[14,0.75px],[15,0.75px],[16,0.75px],[17,1px]]
1450 - function() { return global.text_visible_water_labels; }
1454 kind: [river,canal,stream,dam,ditch,drain]
1458 text_source: global.ux_language_text_source
1460 fill: [0.314,0.591,0.640]
1461 family: global.text_font_family
1465 water-line-labels-z14:
1466 filter: { $zoom: [14] }
1468 text-blend-order: { font: { size: 10px } }
1469 water-line-labels-z17:
1470 filter: { $zoom: [17] }
1472 text-blend-order: { font: { size: 14px } }
1473 not-river-not-stream:
1474 filter: { kind: [canal,dam,ditch,drain], $zoom: { max: 16 } }
1479 filter: { kind: [stream], $zoom: { max: 17 } }
1488 - not: { kind: [riverbank, dock, playa] }
1491 # show labels for smaller landuse areas at higher zooms
1492 - { $zoom: { min: 5 }, area: { min: 10000000000 } }
1493 - { $zoom: { min: 6 }, area: { min: 5000000000 } }
1494 - { $zoom: { min: 7 }, area: { min: 400000000 } }
1495 - { $zoom: { min: 8 }, area: { min: 200000000 } }
1496 - { $zoom: { min: 9 }, area: { min: 100000000 } }
1497 - { $zoom: { min: 10 }, area: { min: 100000000 } }
1498 - { $zoom: { min: 11 }, area: { min: 10000000 } }
1499 - { $zoom: { min: 12 }, area: { min: 2000000 } }
1500 - { $zoom: { min: 13 }, area: { min: 1000000 } }
1501 - { $zoom: { min: 14 }, area: { min: 500000 } }
1502 - { $zoom: { min: 15 }, area: { min: 100000 } }
1503 - { $zoom: { min: 15 }, area: { min: 50000 } }
1504 - { $zoom: { min: 16 }, area: { min: 20000 } }
1505 - { $zoom: { min: 17 } }
1509 text_source: global.ux_language_text_source
1511 fill: [0.314,0.591,0.640] #global.text_fill_water
1512 family: global.text_font_family
1522 size: [[5,9px],[8,12px]]
1529 text_source: global.ux_language_text_source
1531 fill: [0.314,0.591,0.640] #global.text_fill_water
1532 family: global.text_font_family
1535 transform: uppercase
1537 filter: { kind: ocean }
1539 filter: { $zoom: { min: 1, max: 4 } }
1542 text_source: global.ux_language_text_source_sea
1545 filter: { $zoom: { min: 4 } }
1548 text_source: global.ux_language_text_source_ocean
1554 size: [[1,8px],[4,16px]]
1556 filter: { $zoom: [3], kind: sea }
1557 draw: { text-blend-order: { visible: false } }
1560 filter: { not: { kind: [ocean] }, $zoom: { min: 4 } }
1563 text_source: global.ux_language_text_source_sea
1566 filter: { not: { kind: [ocean] } }
1570 size: [[4,9px],[8,16px]]
1579 # show labels for smaller landuse areas at higher zooms
1580 - { $zoom: { min: 7 }, area: { min: 1500000000 } }
1581 - { $zoom: { min: 8 }, area: { min: 200000000 } }
1582 - { $zoom: { min: 9 }, area: { min: 100000000 } }
1583 - { $zoom: { min: 10 }, area: { min: 100000000 } }
1584 - { $zoom: { min: 11 }, area: { min: 10000000 } }
1585 - { $zoom: { min: 12 }, area: { min: 2000000 } }
1586 - { $zoom: { min: 13 }, area: { min: 1000000 } }
1587 - { $zoom: { min: 14 }, area: { min: 500000 } }
1588 - { $zoom: { min: 15 }, area: { min: 100000 } }
1589 - { $zoom: { min: 15 }, area: { min: 50000 } }
1590 - { $zoom: { min: 16 }, area: { min: 20000 } }
1591 - { $zoom: { min: 17 } }
1594 text_source: global.ux_language_text_source
1597 family: global.text_font_family
1601 stroke: { color: global.text_stroke_water, width: 3 }
1604 # size: [[13, 12px], [15, 18px]]
1605 # sprite: global.townspot_sprite
1609 data: { source: mapzen, layer: transit }
1611 filter: { not: { kind: [platform] }, $zoom: { min: 14 } }
1614 order: function() { return feature.sort_rank || 275; }
1616 filter: { kind: [railway,train] }
1619 color: [0.588,0.671,0.698]
1620 width: [[14,0.4px],[15,0.75px],[16,1.1px],[18,2px],[19,1m]]
1622 filter: { kind: subway }
1625 color: [0.588,0.671,0.698]
1626 width: [[14,0.4px],[15,0.75px],[16,1.3px],[17,1.5px],[18,2m]]
1628 filter: { kind: [light_rail,tram], $zoom: { min: 15 } }
1632 color: [0.588,0.671,0.698]
1633 width: [[14,0px],[15,0.6px],[16,0.75px],[17,1.5px],[19,1m]]
1635 filter: { kind: platform }
1638 color: [0.569,0.690,0.722,0.5]
1640 visible: global.grey9_v
1642 filter: { $geometry: polygon }
1644 polygons_transparent:
1645 color: [0.592,0.671,0.694,0.5]
1646 visible: global.grey9_v
1649 outline_transparent:
1650 color: global.grey9_o
1651 width: [[16,0px],[17,0.5px],[19,2px]]
1655 order: function() { if($zoom<17) { return feature.sort_rank; } else { return 435; } }
1656 color: [0.569,0.690,0.722,0.5]
1658 visible: global.grey9_v
1659 polygons_transparent:
1660 order: function() { if($zoom<17) { return feature.sort_rank; } else { return 435; } }
1661 outline_transparent:
1662 order: function() { if($zoom<17) { return feature.sort_rank; } else { return 436; } }
1664 filter: { $geometry: polygon }
1666 polygons_transparent:
1667 color: [0.592,0.671,0.694,0.5]
1668 visible: global.grey9_v
1671 outline_transparent:
1672 color: global.grey9_o
1673 width: [[16,0px],[17,0.5px],[19,2px]]
1675 # # useful to example road geometry merging & Tangram labeling w/r/t tile boundaries
1677 # data: { source: mapzen, layer: roads }
1682 # color: function() { return [Math.random(), Math.random(), Math.random()] }
1683 # width: [[13,0.5px],[14,1px],[16,2px]]
1686 data: { source: mapzen, layer: roads }
1689 # let roads sort themselves past zoom 14 (using server value)
1690 order: global.feature_order
1691 # but give them all the same outline
1695 text_source: global.ux_language_text_source
1696 visible: false # labels are enabled by each layer below
1698 family: global.text_font_family
1700 fill: global.text_fill
1703 natural_earth_highways:
1704 filter: { source: 'naturalearthdata.com', $zoom: { max: 8 } }
1707 # Perf impact (too many vertices)
1710 color: global.highway1
1711 width: [[5, 1px], [7, 1.4px], [9, 1.5px], [14, 3px], [16, 4px], [17, 10m]]
1713 filter: { kind: major_road }
1716 color: [0.980,0.601,0.559]
1717 width: [[5, 0.45px], [6, 0.75px], [7, 1.0px], [8, 1px]]
1719 filter: { kind: minor_road }
1722 color: [[12, global.minor_road1], [17, global.minor_road2]]
1723 width: [[12, 1.0px], [14, 1.5px], [15, 3px], [16, 5m]]
1725 filter: { kind: ferry }
1728 color: [0.702,0.843,0.933]
1731 filter: { kind: highway, $zoom: { min: 8 } }
1734 color: [[8, global.highway1], [14, global.highway1], [15, [1.0,1.0,1.0]], [17, [1.0,1.0,1.0]]]
1735 width: [[8, 1px], [9, 1.25px], [11, 1.2px], [12, 1.3px], [13, 1.5px], [14, 2.25px], [15, 0.15px], [16, 5.5px], [17, 12m]]
1737 color: [[11, global.highway_casing1], [15,[0.988,0.495,0.439]], [17, [0.988,0.495,0.439]]]
1738 width: [[11, 0], [12, 1px], [13, 1.33px], [15, 2px], [16, 2.25px], [17, 3px], [18, 3px]]
1740 filter: { $zoom: { max: 15 } }
1746 filter: { is_link: true } # on- and off-ramps, etc
1749 color: [[9, global.highway_link1], [14, global.highway_link1], [15, [1.0,1.0,1.0]], [17, [1.0,1.0,1.0]]]
1750 width: [[9, 0px], [11, 0.5px], [13, 1px], [14, 1px], [15, 0.15px], [16, 3px], [17, 4m], [18, 5m]]
1754 color: [[10, global.highway_casing1], [16, [0.988,0.495,0.439]], [17, [0.988,0.495,0.439]]]
1755 width: [[14, 0px], [15, 0.85px], [17, 1.125px], [18, 1.5px]]
1757 filter: { $zoom: { max: 15 } }
1762 filter: {is_tunnel: true, $zoom: {min: 13} }
1765 color: global.highway_tunnel1
1767 color: global.highway_tunnel_casing1
1769 filter: {is_tunnel: true, $zoom: {min: 13} }
1772 # color: [[16, [0.843,0.843,0.843]]]
1773 color: [[16, [0.85,0.85,0.85]]]
1775 color: [[13, [0.890,0.890,0.890]], [14, [0.870,0.870,0.870]], [16, [0.824,0.753,0.741]]]
1777 filter: {is_bridge: true}
1783 labels-highway-default:
1786 text_source: global.ux_language_text_source_road_ref_and_name
1787 # labels-highway-early:
1790 # shield_text: false
1794 # visible: global.sdk_road_shields
1797 # fill: [1.0,1.0,1.0]
1800 # stroke: { color: [0.976,0.541,0.490], width: 3 }
1801 # labels-highway-z10:
1804 # shield_text: false
1807 # visible: global.sdk_road_shields
1810 # fill: [1.0,1.0,1.0]
1813 # stroke: { color: [0.976,0.541,0.490], width: 3 }
1814 # labels-highway-z11:
1817 # shield_text: false
1820 # visible: global.sdk_road_shields
1823 # fill: [1.0,1.0,1.0]
1826 # stroke: { color: [0.976,0.541,0.490], width: 3 }
1827 # labels-highway-z12:
1830 # shield_text: false
1833 # visible: global.sdk_road_shields
1836 # fill: [1.0,1.0,1.0]
1839 # stroke: { color: [0.976,0.541,0.490], width: 3 }
1846 visible: global.text_visible_highway
1852 # stroke: { color: [0.976,0.541,0.490], width: 4 }
1859 visible: global.text_visible_highway
1865 # stroke: { color: [0.976,0.541,0.490], width: 4 }
1871 visible: global.text_visible_highway
1876 stroke: { color: [1.000,1.000,1.000], width: 2 }
1878 filter: { $zoom: { min: 16, max: 18 } }
1882 visible: global.text_visible_highway
1886 stroke: { color: [1.000,1.000,1.000], width: 4 }
1888 filter: { $zoom: { min: 18 } }
1892 visible: global.text_visible_highway
1896 stroke: { color: [1.000,1.000,1.000], width: 4 }
1899 filter: { kind: major_road, $zoom: { min: 8 } }
1903 color: [[8, global.major_road4], [13, global.major_road2], [17, global.major_road1]]
1904 width: [[13, 0px], [14, 2px], [16, 2.5px], [19, 8m]]
1906 filter: { kind_detail: [trunk, primary] }
1909 color: [1.0,1.0,1.0]
1910 width: [[9, 0.5px], [10, 0.5px], [11, 1.0px], [12, 1.0px], [13, 1.5px], [14, 2.5px], [15, 5px], [16, 10m], [17, 10m]]
1912 color: [[13, [0.827,0.827,0.827]], [15, [1.000,0.739,0.710]]]
1913 # todo: investigate width optimizations
1914 width: [[14, 0px], [15, 1.75px], [16, 2px], [17, 3px]]
1916 filter: { $zoom: { max: 16 } }
1921 order: function() { return feature.sort_rank + 2; }
1923 filter: { kind: [primary] }
1927 order: function() { return feature.sort_rank + 1; }
1929 filter: { ref: true }
1932 color: [[9, global.major_route1], [14, global.major_route1], [15,[1.0,1.0,1.0]], [16,[1.0,1.0,1.0]]]
1933 #order: function() { return feature.sort_rank + 1; }
1934 # todo confirm widths
1935 width: [[9, 1.0px], [10, 1.0px], [11, 1.2px], [12, 1.25px], [13, 1.5px], [14, 1.6px], [15, 0.15px], [16, 5.25px], [17, 12m]]
1937 color: [[13, [0.870,0.870,0.870]], [15, [0.976,0.612,0.573]]]
1938 width: [[13, 0], [15, 2px], [16, 2px], [17, 3px]]
1940 filter: { $zoom: { max: 16 } }
1943 order: function() { return feature.sort_rank + 2; }
1946 # no national-routes layer because it's not different than the basic style
1948 filter: {is_tunnel: true, $zoom: {min: 13} }
1951 color: global.major_tunnel1
1953 color: global.major_tunnel_casing1
1954 width: [[13, 0.5px], [15, 2px], [16, 2px], [17, 3px]]
1955 labels-trunk_primary-route-default:
1958 text_source: global.ux_language_text_source_road_ref_and_name
1959 visible: global.text_visible_trunk_primary_route
1960 # labels-trunk_primary-route-z13:
1962 # $zoom: { max: 14 }
1963 # shield_text: false
1967 # visible: global.text_visible_trunk_primary_route
1969 # fill: [1.0,1.0,1.0]
1972 # stroke: { color: [0.976,0.541,0.490], width: 2 }
1973 labels-trunk_primary-route-z14:
1974 filter: { $zoom: [14] }
1982 stroke: { color: [0.95,0.95,0.95], width: 0.1px }
1983 labels-trunk_primary-route-z15:
1984 filter: { $zoom: [15] }
1988 #text_source: global.ux_language_text_source_road_ref_and_name
1993 stroke: { color: [0.95,0.95,0.95], width: 0.1px }
1994 labels-trunk_primary-route-z16:
1995 filter: { $zoom: { min: 16 } }
1999 #text_source: global.ux_language_text_source_road_ref_and_name
2004 stroke: { color: [1.000,1.000,1.000], width: 4px }
2005 labels-trunk_primary-default:
2008 text_source: global.ux_language_text_source_road_ref_and_name_short
2009 visible: global.text_visible_trunk_primary
2010 labels-trunk_primary-z11:
2016 visible: global.text_visible_trunk_primary_e
2017 #text_source: global.ux_language_text_source_road_ref_and_name_short
2021 # stroke: { color: [1.000,0.631,0.590], width: 3 }
2022 labels-trunk_primary-z12:
2028 visible: global.text_visible_trunk_primary_e
2029 #text_source: global.ux_language_text_source_road_ref_and_name_short
2033 # stroke: { color: [1.000,0.631,0.590], width: 3 }
2034 labels-trunk_primary-z13:
2040 #text_source: global.ux_language_text_source_road_ref_and_name_short
2042 fill: [0.25,0.25,0.25]
2044 stroke: { color: global.text_stroke, width: 2 }
2045 labels-trunk_primary-z14:
2051 #text_source: global.ux_language_text_source_road_ref_and_name_short
2053 fill: [0.10,0.10,0.10]
2055 stroke: { color: [1.00,1.00,1.00], width: 2 }
2056 labels-trunk_primary-z15:
2057 filter: { $zoom: [15] }
2061 #text_source: global.ux_language_text_source_road_ref_and_name_short
2065 stroke: { color: [1.00,1.00,1.00], width: 3 }
2066 labels-trunk_primary-z16:
2067 filter: { $zoom: [16] }
2071 #text_source: global.ux_language_text_source_road_ref_and_name
2075 stroke: { color: [1.00,1.00,1.00], width: 3 }
2076 labels-trunk_primary-z17:
2077 filter: { $zoom: [17] }
2081 #text_source: global.ux_language_text_source_road_ref_and_name
2085 stroke: { color: [1.00,1.00,1.00], width: 3 }
2086 labels-trunk_primary-z18:
2087 filter: { $zoom: { min: 18 } }
2091 #text_source: global.ux_language_text_source_road_ref_and_name
2095 stroke: { color: [1.00,1.00,1.00], width: 3 }
2097 filter: { is_link: true } # on- and off-ramps, etc
2100 width: [[9, 0px], [10, 0.5px], [14, 2px], [16, 4m], [17, 5m], [18, 6m]]
2102 color: [[10, [0.827,0.827,0.827]], [13, [0.827,0.827,0.827]], [15, [1.000,0.739,0.710]]]
2103 width: [[10, 0], [11, 1px], [14, 1px], [16, 1.5px], [17, 2px]]
2105 filter: {is_tunnel: true, $zoom: {min: 13} }
2108 color: global.major_tunnel1
2110 color: global.major_tunnel_casing1
2112 filter: { kind_detail: secondary }
2115 color: [1.0,1.0,1.0]
2116 width: [[11, 0.65px], [12, 0.75px], [13, 1.25px], [14, 2px], [15, 5px], [16, 10m], [17, 10m]]
2118 color: [[15, [1.000,0.739,0.710]]]
2119 width: [[14, 0], [15, 1.75px], [16, 2px], [17, 3px]]
2121 filter: { $zoom: { max: 16 } }
2126 order: 353 #function() { return feature.sort_rank + 2; }
2128 filter: { ref: true, $zoom: { min: 12} }
2131 #order: function() { return feature.sort_rank + 2; }
2132 color: [1.0,1.0,1.0]
2133 width: [[11, 0.65px], [12, 0.75px], [13, 1.25px], [14, 2px], [15, 5px], [16, 12m], [17, 12m]]
2135 color: [0.827,0.827,0.827]
2136 width: [[14, 0px], [15, 1.75px], [16, 2px], [17, 3px]]
2138 filter: { $zoom: { max: 15 } }
2141 order: function() { return feature.sort_rank + 2; }
2145 filter: {is_tunnel: true, $zoom: {min: 13} }
2148 color: global.major_tunnel1
2150 color: global.major_tunnel_casing1
2151 labels-secondary-routes-default:
2154 text_source: global.ux_language_text_source_road_ref_and_name_short
2155 labels-secondary-routes:
2156 filter: { $zoom: [13] }
2160 visible: global.text_visible_secondary_e
2161 #text_source: global.ux_language_text_source_road_ref_and_name_short
2165 stroke: { color: global.text_stroke, width: 4 }
2166 labels-secondary-routes-z15:
2167 filter: { $zoom: { min: 15 } }
2171 visible: global.text_visible_secondary_e
2172 #text_source: global.ux_language_text_source_road_ref_and_name_short
2177 stroke: { color: global.text_stroke, width: 4 }
2179 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
2182 color: [1.0,1.0,1.0]
2184 color: [[14, [0.800,0.851,0.847]], [15, [0.678,0.796,0.792]]]
2185 width: [[12, 0px], [13, 0.5px], [14, 1.0px], [15, 1.0px], [16, 1.5px], [18, 3.0px]]
2187 filter: { landuse_kind: golf_course }
2191 color: [0.757,0.839,0.788]
2193 filter: { landuse_kind: nature_reserve }
2197 color: [0.635,0.819,0.742]
2199 filter: { landuse_kind: conservation }
2205 filter: { landuse_kind: zoo }
2210 labels-secondary-default:
2213 text_source: global.ux_language_text_source_road_ref_and_name_short
2214 visible: global.text_visible_secondary
2215 labels-secondary-z13:
2221 visible: global.text_visible_secondary_e
2222 #text_source: global.ux_language_text_source_road_ref_and_name_short
2226 stroke: { color: global.text_stroke, width: 2 }
2227 labels-secondary-z14:
2233 visible: global.text_visible_secondary_e
2234 #text_source: global.ux_language_text_source_road_ref_and_name_short
2236 fill: [0.30,0.30,0.30]
2238 stroke: { color: [1.00,1.00,1.00], width: 2 }
2239 labels-secondary-z15:
2245 #text_source: global.ux_language_text_source_road_ref_and_name_short
2247 fill: [0.10,0.10,0.10]
2249 stroke: { color: [1.00,1.00,1.00], width: 2 }
2250 labels-secondary-z16:
2251 filter: { $zoom: { min: 16, max: 18 } }
2255 #text_source: global.ux_language_text_source_road_ref_and_name_short
2259 stroke: { color: [1.00,1.00,1.00], width: 3 }
2260 labels-secondary-z18:
2261 filter: { $zoom: { min: 18 } }
2266 text_source: global.ux_language_text_source_road_ref_and_name
2268 # need a fill color here?
2269 fill: [0.15,0.15,0.15]
2271 stroke: { color: [1.00,1.00,1.00], width: 3 }
2273 filter: { kind_detail: [tertiary, tertiary_link] }
2276 color: [1.0,1.0,1.0]
2277 width: [[11, 0.5px], [12, 0.5px], [13, 0.65px], [14, 1.0px], [15, 2px], [16, 8m], [19, 10m]]
2279 color: [0.827,0.827,0.827]
2280 # todo: look at zoom 13 width
2281 width: [[15, 0], [16, 1.0px], [18, 3.5px]]
2283 filter: { $zoom: { max: 15 } }
2288 order: function() { return feature.sort_rank + 3; }
2290 filter: { ref: true, $zoom: { min: 12} }
2293 color: [1.0,1.0,1.0]
2294 width: [[11, 0.5px], [12, 0.5px], [13, 0.65px], [14, 1.0px], [15, 2px], [16, 8m], [19, 10m]]
2296 color: [0.827,0.827,0.827]
2297 width: [[15, 0], [16, 1.0px], [18, 3.5px]]
2299 filter: { $zoom: { max: 15 } }
2302 order: function() { return feature.sort_rank + 3; }
2306 filter: {is_tunnel: true, $zoom: {min: 13} }
2309 color: global.major_tunnel1
2311 color: global.major_tunnel_casing1
2313 filter: { is_link: true } # on- and off-ramps, etc
2316 color: global.major_road1
2317 width: [[10, 0.5px], [14, 2px], [16, 4m], [17, 5m], [18, 6m]]
2319 color: [[12, global.major_casing2]]
2320 width: [[12, 0], [14, 1px], [16, 1.5px], [17, 2px]]
2322 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
2325 #width: [[11, 0.0px], [12, .5px], [14, 1.5px], [16, 2.0px], [19, 7m]]
2326 color: [[12, [0.9,0.9,0.9]], [13, [0.9,0.9,0.9]], [14, [0.98,0.98,0.98]]]
2328 color: [[14, [0.800,0.851,0.847]], [15, [0.678,0.796,0.792]]]
2329 width: [[12, 0px], [13, 0.5px], [14, 1.0px], [15, 1.0px], [16, 1.5px], [18, 3.0px]]
2331 filter: { landuse_kind: golf_course }
2335 color: [0.698,0.835,0.765]
2337 filter: { landuse_kind: nature_reserve }
2341 color: [0.635,0.819,0.742]
2343 filter: { landuse_kind: conservation }
2349 filter: { landuse_kind: zoo }
2354 labels-tertiary-default:
2357 text_source: global.ux_language_text_source_road_ref_and_name_short
2358 visible: global.text_visible_tertiary
2359 labels-tertiary-z13:
2360 filter: { $zoom: [13] }
2364 visible: global.text_visible_tertiary_e
2365 #text_source: global.ux_language_text_source_road_ref_and_name_short
2369 stroke: { color: [1.00,1.00,1.00], width: 1 }
2370 labels-tertiary-z14:
2371 filter: { $zoom: [14] }
2375 visible: global.text_visible_tertiary_e
2376 #text_source: global.ux_language_text_source_road_ref_and_name_short
2380 stroke: { color: [1.00,1.00,1.00], width: 1 }
2381 labels-tertiary-z15:
2382 filter: { $zoom: [15] }
2386 #text_source: global.ux_language_text_source_road_ref_and_name_short
2390 stroke: { color: [1.00,1.00,1.00], width: 1 }
2391 labels-tertiary-z16:
2392 filter: { $zoom: [16] }
2396 #text_source: global.ux_language_text_source_road_ref_and_name_short
2400 stroke: { color: [1.00,1.00,1.00], width: 2 }
2401 labels-tertiary-z17:
2402 filter: { $zoom: { min: 17, max: 18 } }
2406 #text_source: global.ux_language_text_source_road_ref_and_name_short
2408 fill: [0.15,0.15,0.15]
2410 stroke: { color: [1.00,1.00,1.00], width: 2 }
2411 labels-tertiary-z18:
2412 filter: { $zoom: { min: 18 } }
2416 #text_source: global.ux_language_text_source_road_ref_and_name_short
2418 fill: [0.15,0.15,0.15]
2420 stroke: { color: [1.00,1.00,1.00], width: 2 }
2422 filter: { kind: minor_road, not: { kind_detail: service }, $zoom: { min: 8 } }
2425 color: [[12, [0.9,0.9,0.9]], [13, [0.9,0.9,0.9]], [14, [1.0,1.0,1.0]]]
2426 width: [[12, 0.65px], [13, 0.75px], [14, 0.85px], [15, 2px], [16, 8m], [17, 9m]]
2427 # todo look at when color starts (z11 not z12) and width changes
2428 #width: [[11, 0.5px], [12, 0.75px], [13, 1.0px], [14, 1.2px], [15, 2.5px], [16, 8m]]
2430 color: [0.843,0.843,0.843]
2431 width: [[15, 0], [16, 2px], [17, 3px]]
2433 filter: { $zoom: { max: 16 } }
2439 # Is this junk code?
2441 filter: { $zoom: { min: 17 } }
2448 filter: { landuse_kind: [park,protected_area,nature_reserve,conservation,golf_course,garden,wood,farmland,farm] }
2451 #todo: is the width here right?
2452 #width: [[11, 0.5px], [12, 1.0px], [13, 1.2px], [14, 1.75px], [15, 2.5px], [16, 8m]]
2453 color: [[12, [0.9,0.9,0.9]], [13, [0.96,0.96,0.96]], [14, [1.0,1.0,1.0]]]
2455 color: [[14, [0.800,0.851,0.847]], [15, [0.678,0.796,0.792]]]
2456 #todo: is the width here right?
2457 width: [[13, 0px], [14, 0.25px], [17, 2.0px], [18, 4.0px]]
2459 filter: { landuse_kind: golf_course }
2463 color: [0.757,0.839,0.788]
2465 filter: { landuse_kind: nature_reserve }
2469 color: [0.635,0.819,0.742]
2471 filter: { landuse_kind: conservation }
2477 filter: { landuse_kind: zoo }
2484 # filter: { landuse_kind: residential }
2490 filter: { landuse_kind: university }
2493 color: [[12, [0.9,0.9,0.9]], [13, [0.96,0.96,0.96]], [14, [1.0,1.0,1.0]]]
2495 color: [0.806,0.763,0.717]
2496 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2498 filter: { landuse_kind: hospital }
2501 color: [[12, [0.9,0.9,0.9]], [13, [0.96,0.96,0.96]], [14, [1.0,1.0,1.0]]]
2503 color: [0.818,0.702,0.713]
2504 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2507 filter: {is_tunnel: true, $zoom: {min: 13} }
2510 color: [0.870,0.870,0.870]
2512 color: [0.790,0.790,0.790]
2514 filter: { is_bridge: true }
2520 labels-minor_road-z15:
2521 filter: { $zoom: 15 }
2525 visible: global.text_visible_minor_road_e
2526 text_source: global.ux_language_text_source
2528 fill: [0.30,0.30,0.30]
2530 stroke: { color: [1.00,1.00,1.00], width: 1 }
2531 labels-minor_road-z16:
2532 filter: { $zoom: 16 }
2536 visible: global.text_visible_minor_road_e
2537 text_source: global.ux_language_text_source
2539 fill: [0.35,0.35,0.35]
2541 stroke: { color: [1.00,1.00,1.00], width: 2 }
2542 labels-minor_road-z17:
2543 filter: { $zoom: { min: 17, max: 18 } }
2547 visible: global.text_visible_minor_road_e
2548 text_source: global.ux_language_text_source
2550 fill: [0.25,0.25,0.25]
2552 stroke: { color: [1.00,1.00,1.00], width: 2 }
2553 labels-minor_road-z18:
2554 filter: { $zoom: { min: 18 } }
2558 visible: global.text_visible_minor_road
2559 text_source: global.ux_language_text_source
2561 # needs a fill color?
2562 fill: [0.15,0.15,0.15]
2564 stroke: { color: [1.00,1.00,1.00], width: 2 }
2566 filter: { kind: minor_road, kind_detail: service }
2569 color: [[12, [0.9,0.9,0.9]], [14, [0.9,0.9,0.9]], [15, [1.0,1.0,1.0]]]
2570 # todo: consider starting at z13 with 0.5px
2571 width: [[12, 0.65px], [13, 0.75px], [14, 0.85px], [15, 1.25px], [16, 2.0px], [18, 6m]]
2573 color: [0.827,0.827,0.827]
2574 width: [[15, 0px], [16, 0.5px], [17, 1.0px], [18, 1.75px]]
2576 # Is this junk code?
2578 filter: { $zoom: { min: 17 } }
2585 filter: { landuse_kind: [park,forest,nature_reserve,conservation,golf_course,garden] }
2588 #todo: is the color necc here?
2589 color: [0.976,0.976,0.976]
2591 color: [[14, [0.800,0.851,0.847]], [15, [0.678,0.796,0.792]]]
2592 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2594 filter: { landuse_kind: golf_course }
2598 color: [0.698,0.835,0.765]
2600 filter: { landuse_kind: nature_reserve }
2604 color: [0.635,0.819,0.742]
2606 filter: { landuse_kind: conservation }
2612 filter: { landuse_kind: zoo }
2618 filter: { landuse_kind: [cemetery,garden] }
2622 color: [0.737,0.816,0.753]
2623 # todo: consider starting z13 with 0.25px
2624 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2626 filter: { landuse_kind: university }
2629 #todo: is this necc here?
2630 color: [1.0,1.0,1.0]
2632 color: [0.806,0.763,0.717]
2633 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2635 filter: { landuse_kind: hospital }
2638 #todo: is this necc here?
2639 color: [1.0,1.0,1.0]
2641 color: [0.818,0.702,0.713]
2642 width: [[13, 0px], [14, 0.5px], [17, 2.0px], [18, 4.0px]]
2643 labels-service_road:
2644 filter: { $zoom: 17 }
2648 visible: global.text_visible_service_road
2649 text_source: global.ux_language_text_source
2652 fill: [0.25,0.25,0.25]
2654 stroke: { color: [1.00,1.00,1.00], width: 2 }
2655 labels-service_road-z18:
2656 filter: { $zoom: { min: 18 } }
2660 visible: global.text_visible_service_road
2661 text_source: global.ux_language_text_source
2664 fill: [0.15,0.15,0.15]
2666 stroke: { color: [1.00,1.00,1.00], width: 2 }
2673 # United State looks great with shield_text alone, but...
2675 #shield_text: true # some roads don't have shield text, deal with that later
2677 # Europe doesn't have many network relations set, so we could look for either
2678 # shield_text or ref (with no shield_text) but...
2679 # that makes United States look a bit funky with `(xxx)` and generic shields
2680 # showing up in fields of custom state shields like US:CA and US:NY
2682 - function() { return global.sdk_road_shields; }
2684 - shield_text: true # some roads don't have shield text, deal with that later
2686 - shield_text: false # some roads don't have shield text, deal with that later
2688 - kind_detail: [motorway, trunk, primary, secondary, tertiary]
2692 # you need to match any custom shield to the vector tile `network` values
2695 if( feature.shield_text ) {
2696 return ('generic_shield-' + feature.shield_text.length + 'char');
2698 return ('generic_shield-' + feature.ref.length + 'char');
2701 sprite_default: generic_shield_5char
2703 # Size is specified below, and limited to 5 char in another filter
2704 repeat_group: shields
2705 repeat_distance: [[8,90px],[10,40px],[13,30px]]
2707 placement_min_length_ratio:
2715 cull_from_tile: true
2718 offset: [0px, -0.5px]
2719 repeat_distance: 200px
2723 if( feature.shield_text ) {
2724 return feature.shield_text;
2731 fill: [0.308,0.308,0.308]
2732 size: [[7,7px],[12,8px],[15,11px]]
2734 default_priority_highway:
2737 - kind_detail: motorway
2743 visible: global.sdk_road_shields
2745 default_priority_trunk:
2748 - kind_detail: [trunk]
2749 - $zoom: { min: 10 }
2754 visible: global.sdk_road_shields
2755 default_priority_primary:
2758 - kind_detail: [primary]
2759 - $zoom: { min: 12 }
2764 visible: global.sdk_road_shields
2765 default_priority_trunk_secondary:
2768 - kind_detail: [secondary]
2769 - $zoom: { min: 12 }
2774 visible: global.sdk_road_shields
2775 default_priority_trunk_tertiary:
2778 - kind_detail: tertiary
2779 - $zoom: { min: 13 }
2784 visible: global.sdk_road_shields
2789 if( feature.shield_text ) {
2790 return (feature.shield_text.length === 1)
2792 return (feature.ref.length === 1)
2797 size: [[6,[14px,14px]],[13,[16px,16px]],[15,[18px,18px]]]
2801 if( feature.shield_text ) {
2802 return (feature.shield_text.length === 2)
2804 return (feature.ref.length === 2)
2809 size: [[6,[18px,14px]],[13,[20px,15px]],[15,[24px,18px]]]
2813 if( feature.shield_text ) {
2814 return (feature.shield_text.length === 3)
2816 return (feature.ref.length === 3)
2821 size: [[6,[25px,14px]],[13,[27px,15px]],[15,[33px,18px]]]
2825 if( feature.shield_text ) {
2826 return (feature.shield_text.length === 4)
2828 return (feature.ref.length === 4)
2833 size: [[6,[29px,14px]],[13,[31px,15px]],[15,[38px,18px]]]
2836 filter: { $zoom: { max: 14 } }
2843 if( feature.shield_text ) {
2844 return (feature.shield_text.length === 5)
2846 return (feature.ref.length === 5)
2851 size: [[6,[34px,14px]],[13,[37px,15px]],[15,[45px,18px]]]
2854 filter: { $zoom: { max: 14 } }
2858 # this is kinda a hack
2862 if( feature.shield_text ) {
2863 return (feature.shield_text.length > 5)
2865 return (feature.ref.length > 5)
2872 # Now for the good stuff
2875 filter: { shield_text: true }
2880 # US Interstate roads
2886 # you need to match any custom shield to the vector tile `network` values
2887 sprite: function() { return (feature.network + '-' + feature.shield_text.length + 'char'); }
2889 visible: global.sdk_road_shields
2891 offset: [0px, 0.5px]
2893 fill: [0.308,0.308,0.308]
2894 size: [[7,8px],[13,9px],[15,11px]]
2896 filter: function() { return (feature.shield_text.length === 1) }
2899 size: [[6,[15px,18px]],[13,[17px,20px]],[15,[22px,25px]]]
2901 filter: function() { return (feature.shield_text.length === 2) }
2904 size: [[6,[18px,18px]],[13,[20px,20px]],[15,[25px,25px]]]
2906 filter: function() { return (feature.shield_text.length === 3) }
2909 size: [[6,[23px,18px]],[13,[26px,20px]],[15,[33px,25px]]]
2911 filter: function() { return (feature.shield_text.length === 4) }
2914 size: [[6,[25px,18px]],[13,[27px,20px]],[15,[35px,25px]]]
2916 filter: function() { return (feature.shield_text.length === 5) }
2919 size: [[6,[26px,18px]],[13,[30px,20px]],[15,[38px,25px]]]
2923 network: ['US:US','US:US:Business', 'US:US:Truck', 'US:US:Alternate']
2927 # you need to match any custom shield to the vector tile `network` values
2929 function() { return ('US:US-' + feature.shield_text.length + 'char'); }
2931 cull_from_tile: true
2932 visible: global.sdk_road_shields
2934 offset: [0px, -0.7px]
2936 fill: [0.380,0.318,0.312]
2937 size: [[7,8px],[13,9px],[15,11px]]
2939 filter: function() { return (feature.shield_text.length === 1) }
2942 size: [[6,[15px,17px]],[13,[17px,19px]],[15,[22px,24px]]]
2944 filter: function() { return (feature.shield_text.length === 2) }
2947 size: [[6,[18px,17px]],[13,[20px,19px]],[15,[26px,24px]]]
2949 filter: function() { return (feature.shield_text.length === 3) }
2952 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[34px,25px]]]
2954 filter: function() { return (feature.shield_text.length === 4) }
2957 size: [[6,[25px,17px]],[13,[29px,19px]],[15,[39px,25px]]]
2959 filter: function() { return (feature.shield_text.length === 5) }
2962 size: [[6,[27px,17px]],[13,[30px,19px]],[15,[41px,25px]]]
2965 # # Match state highways: `US:??`
2968 # return feature.shield_text &&
2969 # /^US:(?!US)\w\w$/.test(feature.network)
2973 # # you need to match any custom shield to the vector tile `network` values
2975 # visible: global.sdk_road_shields
2977 # Match California state highways: `US:CA`
2980 return feature.shield_text &&
2981 /^US:CA$/.test(feature.network)
2985 sprite: function() { return (feature.network + '-' + feature.shield_text.length + 'char'); }
2990 fill: [0.308,0.308,0.308]
2991 size: [[7,7px],[13,9px],[15,10px]]
2993 filter: { kind_detail: [motorway], $zoom: [7,8] }
2996 visible: global.sdk_road_shields
2998 filter: { kind_detail: [trunk], $zoom: [8,9] }
3001 visible: global.sdk_road_shields
3003 filter: { kind_detail: primary, $zoom: [10,11] }
3006 visible: global.sdk_road_shields
3008 filter: function() { return (feature.shield_text.length === 1) }
3011 size: [[6,[14px,16px]],[13,[15px,18px]],[15,[18px,21px]]]
3013 filter: function() { return (feature.shield_text.length === 2) }
3016 size: [[6,[18px,18px]],[13,[20px,20px]],[15,[23px,23px]]]
3018 filter: function() { return (feature.shield_text.length === 3) }
3021 size: [[6,[21px,18px]],[13,[24px,20px]],[15,[28px,23px]]]
3023 filter: function() { return (feature.shield_text.length === 4) }
3026 size: [[6,[24px,18px]],[13,[26px,20px]],[15,[31px,23px]]]
3028 filter: function() { return (feature.shield_text.length === 5) }
3031 size: [[6,[25px,18px]],[13,[27px,20px]],[15,[32px,23px]]]
3033 # Match New York state highways: `US:NY`
3036 return feature.shield_text &&
3037 /^US:NY$/.test(feature.network)
3038 /* (/^US:NY$/.test(feature.network) || /^NY:US$/.test(feature.network)) */
3043 function() { return ( 'US:NY-' + feature.shield_text.length + 'char'); }
3045 # offset: [0px, 1px]
3047 fill: [0.308,0.308,0.308]
3048 size: [[7,7px],[13,9px],[15,10px]]
3050 filter: function() { return (feature.shield_text.length === 1) }
3053 size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
3055 filter: function() { return (feature.shield_text.length === 2) }
3058 size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
3060 filter: function() { return (feature.shield_text.length === 3) }
3063 size: [[6,[20px,17px]],[13,[22px,19px]],[15,[27px,22px]]]
3065 filter: function() { return (feature.shield_text.length === 4) }
3068 size: [[6,[21px,17px]],[13,[24px,19px]],[15,[29px,22px]]]
3070 filter: function() { return (feature.shield_text.length === 5) }
3073 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30px,22px]]]
3075 # Match Pennsylvania state highways
3078 return feature.shield_text &&
3079 /^US:PA$/.test(feature.network)
3084 function() { return ( 'US:PA-' + feature.shield_text.length + 'char'); }
3088 fill: [0.308,0.308,0.308]
3089 size: [[7,7px],[13,9px],[15,10px]]
3091 filter: function() { return (feature.shield_text.length === 1) }
3094 size: [[6,[13px,17px]],[13,[15px,19px]],[15,[18px,22px]]]
3096 filter: function() { return (feature.shield_text.length === 2) }
3099 size: [[6,[17px,17px]],[13,[19px,19px]],[15,[22px,22px]]]
3101 filter: function() { return (feature.shield_text.length === 3) }
3104 size: [[6,[21px,17px]],[13,[24px,19px]],[15,[28px,22px]]]
3106 filter: function() { return (feature.shield_text.length === 4) }
3109 size: [[6,[22px,17px]],[13,[25px,19px]],[15,[30x,22px]]]
3111 filter: function() { return (feature.shield_text.length === 5) }
3114 size: [[6,[24px,17px]],[13,[27px,19px]],[15,[32px,22px]]]
3117 # Match state highways: `US:??:*`
3119 # this is very USA specific
3123 # return feature.shield_text &&
3124 # /^US:(?!US)\w\w:.*$/.test(feature.network)
3127 # this generic for any country with 3rd level networks (like county routes in USA)
3129 # US:US:Business about 150
3134 # ??:??:Loop about 200
3135 # ??:??:Spur about 200
3136 # ??:??:Business about 100
3138 # STATE TEXAS SPECIAL ROUTE
3139 # US:TX:FM -- probably just state? there are 3k of these
3144 return feature.shield_text &&
3145 /^\w+:\w+:(!Alternate).+$/.test(feature.network) &&
3150 # you need to match any custom shield to the vector tile `network` values
3151 sprite: function() { return ('county_shield-' + feature.shield_text.length + 'char'); }
3154 visible: global.sdk_road_shields
3157 fill: [0.508,0.508,0.508]
3158 #size: [[11,7px],[15,10px]]
3160 filter: function() { return (feature.shield_text.length === 1) }
3163 size: [[6,[14px,14px]],[13,[16px,16px]],[15,[18px,18px]]]
3165 filter: function() { return (feature.shield_text.length === 2) }
3168 size: [[6,[16px,14px]],[13,[18px,15px]],[15,[22px,18px]]]
3170 filter: function() { return (feature.shield_text.length === 3) }
3173 size: [[6,[20px,14px]],[13,[21px,15px]],[15,[26px,18px]]]
3175 filter: function() { return (feature.shield_text.length === 4) }
3178 size: [[6,[25px,14px]],[13,[28px,15px]],[15,[34px,18px]]]
3180 filter: function() { return (feature.shield_text.length === 5) }
3183 size: [[6,[30px,14px]],[13,[33px,15px]],[15,[40px,18px]]]
3187 - kind: [path, portage_way]
3189 - kind_detail: [steps, track, pier]
3192 color: [[14, [0.97,0.97,0.97]],[16,[0.96,0.96,0.96]]]
3193 width: [[14, 0.6px], [16, 1px], [17, 2.5m]]
3195 color: [0.799,0.799,0.799]
3196 width: [[14, 0], [16, 0.5px], [18, 3px]]
3198 filter: { kind_detail: pedestrian }
3201 color: [[13, [0.97,0.97,0.97]], [16,[0.96,0.96,0.96]]]
3202 width: [[13, 1.5], [15, 1.5], [17, 3m]]
3204 color: [0.799,0.799,0.799]
3205 width: [[17, 0.5], [18, 1]]
3207 filter: { kind_detail: corridor }
3212 filter: { $zoom: { max: 17 } }
3217 filter: { is_bridge: true }
3220 color: [[15, [1.0,1.0,1.0]], [18, [1.0,1.0,1.0]]]
3221 width: [[15, 1.5px], [16, 4m], [17, 2m], [18, 2m]]
3224 color: [[15, global.path_bridge_casing2],[16, global.path_bridge_casing1]]
3225 width: [[15, 0px], [16, 1.0px], [18, 3px]]
3228 # should `forest` and `wood` be included?
3229 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
3232 color: [[14,white], [16,white], [17, [0.95,0.95,0.95]]]
3234 color: [[16, [0.725,0.847,0.847]], [17, [0.663,0.847,0.843]]]
3235 width: [[15, 0px], [16, 0.5px], [18, 3px]]
3237 filter: { landuse_kind: golf_course }
3241 color: [0.698,0.835,0.765]
3243 filter: { landuse_kind: nature_reserve }
3247 color: [0.635,0.819,0.742]
3249 filter: { landuse_kind: conservation }
3255 filter: { landuse_kind: [cemetery,garden] }
3259 color: [0.737,0.816,0.753]
3260 width: [[15, 0px], [16, 0.5px], [18, 3px]]
3262 filter: { landuse_kind: zoo }
3266 color: [0.708,0.881,0.831]
3267 width: [[15, 0px], [16, 0.5px], [18, 3px]]
3269 filter: { landuse_kind: university }
3272 color: [[14, [0.97,0.97,0.97]], [16,[0.96,0.96,0.96]]]
3274 color: [0.806,0.763,0.717]
3275 # todo: consider starting 14 at 0px so z15 has a little width
3276 width: [[15, 0px], [16, 0.5px], [18, 3px]]
3278 filter: { landuse_kind: hospital }
3281 color: [[14,[0.90,0.90,0.90]],[16,[0.96,0.96,0.96]]]
3283 color: [0.847,0.788,0.796]
3284 # todo: consider starting 14 at 0px so z15 has a little width
3285 width: [[15, 0px], [16, 0.5px], [18, 3px]]
3287 filter: { $zoom: { min: 17 } }
3291 visible: global.text_visible_path
3292 text_source: global.ux_language_text_source
3294 # need a fill color?
3295 fill: [0.25,0.25,0.25]
3297 stroke: { color: [1.00,1.00,1.00], width: 1 }
3299 filter: { kind: path, kind_detail: track }
3302 color: [[13, global.minor_road4], [15, global.minor_road3]]
3303 width: [[13, 0.5px], [14, 1.0px], [15, 1.0px], [16, 6m]]
3304 #color: [[13, global.minor_road4],[16, global.minor_road3]]
3305 #width: [[13, 1.0], [15, 1.5], [17, 3m]]
3310 color: global.minor_casing1
3311 width: [[15, 0px], [16, 0.5px], [17, 1.0px], [18, 2.0px]]
3313 filter: { is_bridge: true }
3316 width: [[15, 3.5], [17, 3m]]
3319 color: [[15, global.minor_casing2],[16, global.minor_casing1]]
3320 width: [[15, 0.5px], [16, 1.0px], [18, 2px]]
3323 filter: { landuse_kind: [park,national_park,nature_reserve,conservation,golf_course,garden] }
3326 width: [[13, 0.5px], [14, 0.5px], [15, 1.0px], [16, 6m]]
3328 color: [[16, global.green1_r],[17, global.major_casing1]]
3329 width: [[15, 0px], [16, 0.25px], [17, 0.5px], [18, 1.0px], [19, 2.0px]]
3334 - kind_detail: steps
3337 order: global.feature_order
3338 color: [0.97,0.97,0.97]
3339 width: [[14,0.6px],[16,2px],[17,4px],[18,5px],[19,8px],[20,10px]]
3341 color: [0.867,0.867,0.867]
3344 filter: { landuse_kind: [park,nature_reserve,conservation,golf_course,garden] }
3347 color: [1.0,1.0,1.0]
3349 color: [0.867,0.867,0.867]
3351 filter: { landuse_kind: university }
3354 color: [1.0,1.0,1.0]
3356 color: [0.867,0.867,0.867]
3358 filter: { landuse_kind: hospital }
3361 color: [1.0,1.0,1.0]
3363 color: [0.867,0.867,0.867]
3365 filter: { $zoom: { min: 17 } }
3369 visible: global.text_visible_steps
3370 text_source: global.ux_language_text_source
3374 stroke: { color: [1.00,1.00,1.00], width: 1 }
3375 winter_sport_pistes:
3376 filter: { kind: piste }
3379 order: 388 # We override the server value here because Eraser Map is also a special Ski Map
3383 width: [[13,0px],[14,0.5px],[15, 1px], [16, 1.5px], [18, 3m]]
3388 fill: global.text_fill_piste
3390 stroke: { color: global.grey8, width: 4 }
3392 filter: { $zoom: { max: 15 } }
3397 filter: { $zoom: [15] }
3401 fill: global.text_fill_piste_e
3404 filter: { piste_difficulty: easy }
3407 color: global.piste_easy
3409 filter: { piste_difficulty: intermediate }
3412 color: global.piste_intermediate
3414 filter: { piste_difficulty: advanced }
3417 color: global.piste_advanced
3419 text_source: global.ux_language_text_source_piste_advanced
3421 filter: { piste_difficulty: expert }
3424 color: global.piste_expert
3426 text_source: global.ux_language_text_source_piste_expert
3428 filter: { kind: path, kind_detail: pier }
3431 color: [0.993,0.993,0.993]
3432 width: [[13, 0px], [14, 0.5px],[15, 1.5px], [16, 2.5px],[17, 3px],[18, 3m]]
3434 color: [0.675,0.855,0.886]
3435 width: [[15, 0px],[16,0.65px], [17, 0.75px], [18, 1px], [19, 1.5px]]
3437 filter: { kind: racetrack }
3442 color: [0.600,0.667,0.627]
3443 width: [[13,0.5px],[14,1px],[15, 1px], [16, 1.5px], [18, 3px], [19, 5px]]
3445 filter: { kind: aeroway, kind_detail: [runway,taxiway] }
3448 color: [[10,[0.4,0.4,0.4]],[11,[0.50,0.50,0.50]],[12,[0.7,0.7,0.7]],[13,[0.75,0.75,0.75]],[14,[0.95,0.95,0.95]]]
3450 width: [[10,0.75px],[11,1.25px],[12,2px],[13,4px],[14,8px],[15,16px],[16,32px],[17,60m]]
3452 # color: [17,[0.95,0.95,0.95]]
3454 # Features come in at zoom 9, but include mostly minor airports without POIs until z13
3456 filter: { $zoom: { max: 12 }, not: { landuse_kind: [aerodrome, runway, taxiway] } }
3461 filter: { $zoom: { min: 17 } }
3466 filter: { kind_detail: taxiway }
3469 color: [[13,[0.913,0.913,0.913]],[15,[0.923,0.923,0.923]],[16,[0.95,0.95,0.95]]]
3470 width: [[13,1px],[14,2px],[15,3px],[16,7px],[17,20m]]
3472 color: [0.778,0.778,0.797]
3474 filter: { $zoom: { max: 13 } }
3479 filter: { kind: ferry }
3482 color: [0.702,0.843,0.933]
3483 width: [[12, 0.5px], [14, 1.0px], [15, 1.0px], [16, 1.25px]]
3487 filter: { kind: aerialway }
3491 width: [[14, 0.5px], [15, 1.0px], [16, 2m]]
3493 filter: { kind_detail: [gondola, cable_car] }
3496 color: [0.498,0.302,0.243]
3497 width: [[12, 0.5px], [13, 0.5px], [14, 0.6px], [15, 1px], [16, 2px]]
3499 color: [0.498,0.302,0.243,0.15]
3500 width: [[12, 0px], [13, 5px], [14, 8px], [15, 10px], [16, 12px]]
3502 filter: { kind_detail: chair_lift }
3505 color: [0.493,0.541,0.666]
3506 width: [[12, 0.5px], [13, 0.5px], [14, 0.6px], [15, 1px], [16, 1px], [16, 2px], [18, 3m]]
3508 color: [0.635,0.698,0.859,0.20]
3509 width: [[12, 0px], [13, 5px], [14, 8px], [15, 10px], [16, 12px], [18, 20px]]
3511 filter: { $zoom: { min: 14 } }
3515 visible: global.text_visible_aerialway
3516 text_source: global.ux_language_text_source
3518 fill: global.text_fill
3520 stroke: { color: global.grey8, width: 4 }
3522 filter: { not: { kind_detail: [gondola,cable_car,chair_lift] }, $zoom: { max: 17 } }
3527 filter: { $zoom: [14], kind_detail: [gondola,cable_car] }
3533 filter: { $zoom: { min: 15 } }
3539 filter: { any: [is_bridge: true, is_tunnel: true] }
3543 # except bridges and tunnels, their outlines should also self-sort
3544 order: global.feature_order
3547 filter: { kind: rail, not: { railway: [subway,light_rail,tram] } }
3550 order: global.feature_order
3551 color: [0.588,0.671,0.698]
3552 width: [[12,0px],[13,0.25px],[14,0.4px],[15,0.75px],[16,0.75px],[18,1m]]
3554 filter: { service: true }
3557 color: [0.588,0.671,0.698]
3558 width: [[14,0px],[15,0.3px],[16,0.5px],[18,0.75px],[19,0.5m]]
3560 #filter: { $zoom: {min: 12} }
3563 # let roads sort themselves past zoom 14
3564 order: global.feature_order
3565 # but give them all the same outline
3570 filter: { any: [is_bridge: true, is_tunnel: true] }
3574 # except bridges and tunnels, their outlines should also self-sort
3575 order: function() { return feature.sort_rank || 305; }
3578 data: { source: mapzen, layer: buildings }
3580 not: { location: underground }
3581 # set default footprint and extrusion draw properties, but don't draw by default (rules below will turn visibility on)
3586 color: global.building2
3589 # if( feature.id ) {
3591 # 0.7 * (parseInt(feature.id, 16) / 100 % 1), // jshint ignore:line
3592 # 0.7 * (parseInt(feature.id, 16) / 10000 % 1), // jshint ignore:line
3593 # 0.7 * (parseInt(feature.id, 16) / 1000000 % 1), // jshint ignore:line
3597 # if( feature.scale_rank == 6 ) {
3598 # return [1.,0.,0.,1];
3599 # } else if( feature.scale_rank == 5 ) {
3600 # return [0.,1.,0.,1];
3601 # } else if( feature.scale_rank == 4 ) {
3602 # return [0.,0.,1.,1];
3603 # } else if( feature.scale_rank == 3 ) {
3604 # return [0.,0.,0.5,1];
3605 # } else if( feature.scale_rank == 2 ) {
3606 # return [0.,0.5,0.,1];
3607 # } else if( feature.scale_rank == 1 ) {
3608 # return [0.,0.5,0.,1];
3609 # } else if( feature.scale_rank == 0 ) {
3610 # return [0.5,0.,0.,1];
3612 # return [0.5,0.5,0.5,1];
3620 color: [[13,[0.70,0.70,0.70]],[17,[0.65, 0.65, 0.65]]]
3621 width: [[13, 0.55px], [15, 0.65px], [16,0.75px], [18, 1.25px]]
3623 # building footprints, pre-extrusion
3626 # show footprints for buildings at least one zoom level before they will be extruded
3627 - { $zoom: 13, scale_rank: [1,2] }
3628 - { $zoom: 14, scale_rank: [1,2,3] }
3629 - { $zoom: 15, height: { min: 100 } }
3630 - { $zoom: 15, area: { min: 500 } }
3631 - { $zoom: 15, volume: { min: 100000 } }
3632 - { $zoom: 16, area: { min: 100 } }
3633 - { $zoom: 16, volume: { min: 50000 } }
3634 - { $zoom: { min: 17 }, area: true }
3636 polygons: { visible: true }
3637 lines: { visible: true }
3643 - function() { return global.sdk_building_extrude; }
3645 - { $zoom: 15, height: { min: 190 } }
3646 - { $zoom: 15, area: { min: 5000 } }
3647 - { $zoom: 15, volume: { min: 100000 } }
3648 - { $zoom: 16, height: { min: 100 } }
3649 - { $zoom: 16, area: { min: 3500 } }
3650 - { $zoom: 16, volume: { min: 50000 } }
3651 - { $zoom: 17, area: { min: 500 } }
3652 - { $zoom: 17, volume: { min: 15000 } }
3653 - { $zoom: { min: 18 } }
3657 style: building-grid
3658 extrude: global.building_extrude_height
3661 style: building-lines
3662 extrude: global.building_extrude_height
3663 # NOTE: This is a hack to re-enable the building colors per landuse_kind
3664 # Earlier versions before October 2016 didn't need this hack
3666 filter: { not: { landuse_kind: [station, retail, aerodrome, runway, taxiway, park,forest,nature_reserve,conservation,golf_course,garden, university,school, hospital] } }
3669 color: [0.892,0.880,0.878]
3671 # landuse-specific rules
3674 landuse_kind: [park,forest,nature_reserve,conservation,golf_course,garden]
3677 color: [0.864,0.910,0.905]
3680 # filter: { landuse_kind: golf_course }
3683 # color: global.building2
3685 # filter: { landuse_kind: nature_reserve }
3688 # color: global.building2
3690 # filter: { landuse_kind: conservation }
3693 # color: global.building2
3695 # filter: { landuse_kind: zoo }
3698 # color: global.building2
3700 filter: { landuse_kind: [university,school] }
3703 color: [0.950,0.917,0.883]
3705 color: global.brown1_bo
3707 filter: { landuse_kind: hospital }
3710 color: [0.976,0.908,0.913]
3712 filter: { landuse_kind: [aerodrome, runway, taxiway] }
3715 color: global.purple_b
3717 color: global.purple_bo
3718 width: [[14,0.5px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
3720 filter: { landuse_kind: retail }
3723 color: [0.945, 0.898, 0.878]
3725 transit-overlay-station-buildings:
3728 - landuse_kind: [station]
3729 - function() { return global.sdk_transit_overlay; }
3734 #extrude: function() { return feature.height || 20; }
3739 width: [[14,0.1px],[15,0.5px],[17,0.5px],[18,0.75px],[19,0.25m]]
3740 #extrude: function() { return feature.height || 20; }
3745 - { $zoom: { min: 17 } }
3747 - not: { location: underground, kind: address }
3749 - function() { return global.text_visible_building; }
3750 # - kind: [false, building, university, college, school, kindergarten]
3752 - { $zoom: [16], area: { min: 5000 } }
3753 - { $zoom: [16], area: { min: 5000 } }
3754 - { $zoom: [16], area: { min: 10000 }, landuse_kind: true }
3755 - { $zoom: [16], area: { min: 7000 }, kind_detail: [university, college, school, kindergarten] }
3756 - { $zoom: [16], volume: { min: 50000 }, name: true }
3757 - { $zoom: [17], area: { min: 3000 } }
3758 - { $zoom: [17], area: { min: 2000 }, kind_detail: [university, college, school, kindergarten] }
3759 - { $zoom: [18], area: { min: 1000 } }
3760 - { $zoom: [18], kind_detail: [university, college, school, kindergarten] }
3761 - { $zoom: [19], area: { min: 200 } }
3762 - { $zoom: { min: 19 }, kind_detail: [university, college, school, kindergarten] }
3763 - { $zoom: { min: 20 }, area: true }
3766 text_source: global.ux_language_text_source
3767 move_into_tile: true
3772 family: global.text_font_family
3775 stroke: { color: global.text_stroke_address, width: 1 }
3776 building_labels-z15-z16-z17:
3777 filter: { $zoom: [15,16,17] }
3778 draw: { text-blend-order: { font: { size: 12px, stroke: { width: 2 } } } }
3779 building_labels-z18:
3780 filter: { $zoom: [18,19] }
3781 draw: { text-blend-order: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } }
3782 building_labels-z20-up:
3783 filter: { $zoom: { min: 20 } }
3784 draw: { text-blend-order: { font: { size: 14px, weight: 600, stroke: { width: 3 } } } }
3785 building-labels-z16:
3786 filter: function() { if( $zoom == 16 && feature.name.length > 20 ) { return true; } else { return false; } }
3790 building-labels-z17:
3791 filter: function() { if( $zoom == 17 && feature.name.length > 30 ) { return true; } else { return false; } }
3795 building-labels-z20+:
3796 filter: { $zoom: { min: 20 } }
3799 text_source: global.ux_language_text_source_building_and_address
3805 - { label_position: true, addr_housenumber: true, name: false }
3807 - function() { return global.text_visible_address; }
3811 text_source: addr_housenumber
3813 fill: global.text_fill_address
3814 family: global.text_font_family
3817 stroke: { color: global.text_stroke_address, width: 4 }
3820 data: { source: mapzen, layer: boundaries }
3821 # country subdivisions (states, provinces)
3824 order: global.feature_order
3826 # width: [[9, 1px], [14, 2px], [16, 3px], [17, 8m]]
3834 color: global.country_boundary
3835 width: [[1, 0.5px], [2, 1.0px], [4, 1.5px], [8, 2.5px], [14, 3.5px], [16, 4.5px], [17, 14m]]
3837 filter: { maritime_boundary: true }
3842 filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
3846 visible: global.text_visible_admin
3847 text_source: global.ux_language_text_source_boundary_lines
3853 fill: [0.25,0.25,0.25]
3854 # stroke: { color: global.text_stroke, width: 4 }
3855 transform: uppercase
3856 other_country_boundary_disputed_etc:
3857 filter: { kind: [disputed, indefinite, indeterminate, lease_limit, line_of_control, overlay_limit] }
3860 order: global.feature_order
3861 color: global.country_boundary
3862 width: [[1, 0.2px], [2, 0.5px], [4, 1.0px], [9, 1.5px], [14, 2.5px], [16, 3.5px], [17, 10m]]
3864 filter: { kind: [disputed, line_of_control] }
3869 order: global.feature_order
3870 color: global.country_boundary
3871 #width: [[1, 0.2px], [2, 0.5px], [4, 1.0px], [9, 1.5px], [14, 2.5px], [16, 3.5px], [17, 10m]]
3872 width: [[1, 0.5px], [2, 1.0px], [4, 1.5px], [9, 2.5px], [14, 3.5px], [16, 4.5px], [17, 14m]]
3876 - kind: [region,macroregion]
3877 - kind_detail: [3,4]
3880 color: global.region_boundary
3881 width: [[0, 0.5px], [2, 1.0px], [5, 1.25px], [6, 1.5px], [7, 1.75px], [8, 2.0px], [9, 3.5px], [14, 5.5px], [16, 6.5px], [17, 16m]]
3883 filter: { maritime_boundary: true }
3888 filter: { not: { min_zoom: [1,2] }, $zoom: { max: 8 } }
3893 filter: { name: true, $zoom: { min: 9 }, not: { maritime_boundary: true } }
3897 visible: global.text_visible_admin
3898 text_source: global.ux_language_text_source_boundary_lines
3907 # stroke: { color: global.text_stroke, width: 4 }
3908 transform: uppercase
3910 filter: { kind: city_wall }
3913 color: global.city_wall
3914 width: [[12, 0.75px], [13, 1.0px], [14, 1.2px], [15, 2.0px], [16, 2.5px], [19, 6m]]
3916 filter: { kind: retaining_wall }
3919 color: global.retaining_wall
3920 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 4m]]
3922 filter: { kind: snow_fence }
3925 color: global.snow_fence
3926 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
3928 filter: { kind: fence }
3932 width: [[14, 0.5px], [15, 1.0px], [16, 1.5px], [17, 2.0px], [19, 1.5m]]
3935 data: { source: mapzen, layer: places }
3941 text_source: global.ux_language_text_source
3942 visible: false # labels are enabled by each layer below
3946 fill: global.text_fill
3947 # NOTE: This is a hack for localities because of an icon & text bug, see note below
3949 text_source: global.ux_language_text_source
3950 visible: false # labels are enabled by each layer below
3954 fill: global.text_fill
3960 $zoom: { min: 2, max: 9 }
3964 visible: global.text_visible_admin
3966 fill: [[2,[0.357,0.243,0.184]],[6,[0.604,0.437,0.427]]]
3967 transform: uppercase
3980 not: { name: [United States of America,Brasil,中华人民共和国,Россия,Canada,Kalaallit Nunaat,Ísland,Australia,India,日本,Guam,Indonesia,South Africa,مصر,Nigeria,Kenya] }
3987 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]
4002 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,Хуссар Ирыстон,Аҧсны - Абхазия]
4016 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
4017 - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,El Salvador,Belize,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
4018 - population: { max: 5000000 }
4032 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
4033 - name: [Luxembourg,Liechtenstein,San Marino,Civitatis Vaticanæ,België - Belgique - Belgien,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
4034 - population: { max: 5000000 }
4040 $zoom: { min: 7, max: 9 }
4044 size: [[7,18px],[9,24px]]
4048 # South Ossetia and Abkhazia aren't countries (they are disputed areas)
4049 name: [Liechtenstein,San Marino,Civitatis Vaticanæ,"Хуссар Ирыстон - Южная Осетия","Хуссар Ирыстон","Аҧсны - Абхазия","Լեռնային Ղարաբաղի Հանրապետությու (Nagorno-Karabakh Republic)"]
4055 - population: { max: 5000000 }
4065 $zoom: { min: 4, max: 9 }
4070 text_source: global.ux_language_text_source_short
4078 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] }
4081 visible: global.text_visible_admin
4085 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] }
4088 visible: global.text_visible_admin
4094 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] }
4097 visible: global.text_visible_admin
4102 filter: { $zoom: [7,8] }
4105 visible: global.text_visible_admin
4106 text_source: global.ux_language_text_source_short_proxy_name
4108 size: [[7,15px],[8,16px]]
4110 transform: uppercase
4114 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]
4118 abbrev-small-ones-z7:
4121 name: [Delaware,New Jersey,Connecticut,Rhode Island,Massachusetts,New Hampshire,Vermont]
4124 text_source: global.ux_language_text_source_abbreviation
4125 font: { transform: uppercase }
4131 text_source: global.ux_language_text_source
4136 - population: { max: 1000000 }
4147 visible: global.icon_visible_populated_places
4148 size: [[10,4px],[11,0px]]
4149 sprite: townspot-xs-rev
4155 visible: global.text_visible_populated_places
4157 size: [[5,9px],[8,10px],[12,11px]]
4159 visible: global.text_visible_populated_places
4162 size: [[5,9px],[8,10px],[12,11px]]
4165 # 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 :(
4168 # filter: { $zoom: { min: 11 } }
4175 # NOTE: So instead we play a shell game with symbolizers per zoom
4178 filter: { $zoom: { min: 11 } }
4183 visible: global.text_visible_populated_places
4185 filter: { $zoom: { max: 11 } }
4192 filter: { $zoom: [8,9], population: { min: 10000, max: 50000 } }
4199 filter: { $zoom: [8,9], population: { max: 10000 } }
4206 filter: { $zoom: [8,9], population: false }
4222 # NOTE: These should use icon: buffer instead of going visible: false, but there are problems using icon here :(
4223 # This fixes Paris area, but causes problems for small places in the USA eg Table Bluff near Eureka, California.
4225 filter: { $zoom: [11], population: { max: 1000 }, kind_detail: [village] }
4229 funky-isolated_dwelling:
4230 filter: { $zoom: [13], kind_detail: [isolated_dwelling] }
4235 filter: { $zoom: [13], kind_detail: hamlet }
4241 # someone in London and Salt Lake City thought neighbourhoods should be tagged place: locality
4243 funky-fake-neighbourhoods:
4244 filter: { $zoom: { min: 13 }, kind_detail: [locality] }
4251 population: { min: 10000000 }
4254 size: [[4,5px],[8,6px],[9,0px]]
4255 sprite: townspot-m-rev
4259 size: [[2,11px],[6,15px],[8,16px],[10,18px],[12,18px],[13,0px]]
4263 size: [[2,11px],[6,15px],[8,16px],[10,18px],[12,18px],[13,0px]]
4265 # we only want townspots to show as capital dots starting at zoom 5
4266 filter: { country_capital: true, $zoom: { min: 5 } }
4269 size: [[10,8px],[11,0px]]
4276 population: { min: 5000000, max: 10000000 }
4279 size: [[4,5px],[8,6px],[9,0px]]
4280 sprite: townspot-m-rev
4284 size: [[4,10px],[6,13px],[8,16px],[10,18px],[12,18px],[13,0px]]
4288 size: [[4,10px],[6,13px],[8,16px],[10,18px],[12,18px],[13,0px]]
4290 # we only want townspots to show as capital dots starting at zoom 5
4291 filter: { country_capital: true, $zoom: { min: 5 } }
4294 size: [[10,8px],[11,0px]]
4301 population: { min: 1000000, max: 5000000 }
4304 size: [[4,5px],[8,6px],[9,0px]]
4305 sprite: townspot-m-rev
4309 size: [[4,10px],[6,13px],[8,16px],[10,18px],[12,18px],[13,0px]]
4313 size: [[4,10px],[6,13px],[8,16px],[10,18px],[12,18px],[13,0px]]
4315 # we only want townspots to show as capital dots starting at zoom 5
4316 filter: { country_capital: true, $zoom: { min: 5 } }
4319 size: [[10,8px],[11,0px]]
4326 population: { min: 500000, max: 1000000 }
4329 size: [[8,6px],[9,0px]]
4330 sprite: townspot-m-rev
4334 size: [[5,10px],[8,14px],[10,14px],[12,16px],[13,0px]]
4338 size: [[5,10px],[8,14px],[10,14px],[12,16px],[13,0px]]
4340 filter: { country_capital: true, $zoom: { min: 5 } }
4343 size: [[10,6px],[11,0px]]
4348 population-200k-500k:
4350 population: { min: 200000, max: 500000 }
4353 size: [[8,6px],[9,6px],[10,6px],[11,0px]]
4354 sprite: townspot-m-rev
4358 size: [[6,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
4362 size: [[6,10px],[8,12px],[10,14px],[12,16px],[13,0px]]
4364 filter: { country_capital: true, $zoom: { min: 5 } }
4367 size: [[10,6px],[11,0px]]
4372 population-100k-200k:
4374 population: { min: 100000, max: 200000 }
4377 size: [[8,6px],[9,6px],[10,6px],[11,0px]]
4378 sprite: townspot-m-rev
4382 size: [[6,10px],[8,12px],[10,12px],[12,14px],[14,14px],[15,0px]]
4386 size: [[6,10px],[8,12px],[10,12px],[12,14px],[14,14px],[15,0px]]
4388 filter: { country_capital: true, $zoom: { min: 5 } }
4391 size: [[10,6px],[11,0px]]
4396 population-50k-100k:
4398 population: { min: 50000, max: 100000 }
4401 size: [[8,5px],[9,5px],[10,6px],[11,0px]]
4402 sprite: townspot-s-rev
4406 fill: [0.30,0.30,0.30]
4407 size: [[6,10px],[8,11px],[10,12px],[12,14px],[14,14px],[15,0px]]
4411 fill: [0.30,0.30,0.30]
4412 size: [[6,10px],[8,11px],[10,12px],[12,14px],[14,14px],[15,0px]]
4414 filter: { country_capital: true, $zoom: { min: 5 } }
4417 size: [[10,5px],[11,0px]]
4424 population: { min: 20000, max: 50000 }
4427 size: [[8,5px],[9,5px],[10,5px],[11,0px]]
4428 sprite: townspot-s-rev
4432 fill: [0.30,0.30,0.30]
4433 size: [[9,11px],[12,12px],[14,12px],[15,0px]]
4437 fill: [0.30,0.30,0.30]
4438 size: [[9,11px],[12,12px],[14,12px],[15,0px]]
4440 filter: { country_capital: true, $zoom: { min: 5 } }
4443 size: [[10,5px],[11,0px]]
4450 population: { min: 10000, max: 20000 }
4453 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
4454 sprite: townspot-xs-rev
4458 fill: [0.35,0.35,0.35]
4459 size: [[9,11px],[12,12px],[14,12px],[15,0px]]
4463 fill: [0.35,0.35,0.35]
4464 size: [[9,11px],[12,12px],[14,12px],[15,0px]]
4466 filter: { country_capital: true, $zoom: { min: 5 } }
4469 size: [[10,5px],[11,0px]]
4476 population: { min: 5000, max: 10000 }
4479 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
4480 sprite: townspot-xs-rev
4484 fill: [0.35,0.35,0.35]
4485 size: [[9,10px],[12,12px],[13,12px],[14,12px],[15,0px]]
4489 fill: [0.35,0.35,0.35]
4490 size: [[9,10px],[12,12px],[13,12px],[14,12px],[15,0px]]
4492 filter: { country_capital: true, $zoom: { min: 5 } }
4495 size: [[10,5px],[11,0px]]
4502 population: { min: 2000, max: 5000 }
4505 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
4506 sprite: townspot-xs-rev
4510 fill: [0.35,0.35,0.35]
4511 size: [[9,10px],[12,10px],[13,12px],[14,12px],[15,0px]]
4515 fill: [0.35,0.35,0.35]
4516 size: [[9,10px],[12,10px],[13,12px],[14,12px],[15,0px]]
4518 filter: { country_capital: true, $zoom: { min: 5 } }
4521 size: [[10,5px],[11,0px]]
4528 population: { min: 1000, max: 2000 }
4531 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
4532 sprite: townspot-xs-rev
4536 fill: [0.35,0.35,0.35]
4537 size: [[9,10px],[12,10px],[14,11px],[15,0px]]
4541 fill: [0.35,0.35,0.35]
4542 size: [[9,10px],[12,10px],[14,11px],[15,0px]]
4544 filter: { country_capital: true, $zoom: { min: 5 } }
4547 size: [[10,5px],[11,0px]]
4554 population: { min: 200, max: 1000 }
4557 size: [[8,4px],[9,4px],[10,4px],[11,0px]]
4558 sprite: townspot-xs-rev
4562 fill: [0.35,0.35,0.35]
4563 size: [[9,10px],[12,10px],[14,11px],[15,0px]]
4567 fill: [0.35,0.35,0.35]
4568 size: [[9,10px],[12,10px],[14,11px],[15,0px]]
4570 filter: { country_capital: true, $zoom: { min: 5 } }
4573 size: [[10,5px],[11,0px]]
4580 #neighborhoods (excluding microhoods, eg the Tendernob)
4589 is_landuse_aoi: false
4592 # there are more labels than we want to show, so we hide them,
4593 # then selectively reveal in classes below (ultimately a data problem)
4601 fill: [0.225,0.561,0.415]
4602 transform: uppercase
4607 max_zoom: { min: 12 }
4608 #kind_tile_rank: { max: 6 }
4611 visible: global.text_visible_neighbourhoods_e
4614 stroke: { color: global.text_stroke, width: 4 }
4619 max_zoom: { min: 13 }
4620 #kind_tile_rank: { max: 8 }
4623 visible: global.text_visible_neighbourhoods_e
4629 min_zoom: [11,12,13]
4630 max_zoom: { min: 14 }
4631 kind_tile_rank: { max: 8 }
4634 visible: global.text_visible_neighbourhoods_e
4640 min_zoom: [11,12,13,14]
4641 max_zoom: { min: 15 }
4642 kind_tile_rank: { max: 8 }
4647 visible: global.text_visible_neighbourhoods
4653 min_zoom: [11,12,13,14,15]
4654 max_zoom: { min: 16 }
4655 kind_tile_rank: { max: 8 }
4660 visible: global.text_visible_neighbourhoods
4675 min_zoom: [11,12,13,14,15,16]
4676 max_zoom: { min: 17 }
4677 kind_tile_rank: { max: 8 }
4682 visible: global.text_visible_neighbourhoods
4686 data: { source: mapzen, layer: pois }
4687 #visible: global.label_visible_poi_landuse
4690 - not: { kind: [building,address,farm,tree,apron,residential,commercial,industrial] }
4691 # White list a few kinds to "always" show per the tile zoom inclusion, else test feature's min_zoom
4692 #- function() { return feature.min_zoom <= $zoom }
4693 - function() { if( feature.kind == 'restaurant' || feature.kind == 'landmark' || feature.kind == 'cafe' ) { return true } else { return feature.min_zoom <= $zoom } }
4696 visible: global.icon_visible_poi_landuse
4697 size: [[13, 14px], [16, 18px], [18, 19px]]
4698 sprite: function() { return feature.kind; }
4699 sprite_default: generic
4700 interactive: global.sdk_interactive
4701 priority: 65 #function() { return (feature.min_zoom && Math.floor(feature.min_zoom * 1000)) || 65; }
4705 visible: global.text_visible_poi_landuse
4706 text_source: global.ux_language_text_source
4711 family: Quicksand #global.text_font_family
4713 fill: [0.20,0.20,0.20]
4714 size: [[13,10px],[14,11px],[17,12px],[19,12px],[20,14px]]
4715 stroke: { color: global.text_stroke, width: [[12,2px],[16,4px]] }
4717 # improve legibility at high zooms
4719 filter: { $zoom: { min: 18 } }
4723 # some pois have really long names
4728 # source icon sprite from something other than kind
4730 filter: { kind: [grass, pitch] }
4733 sprite: function() { return feature.kind_detail; }
4734 # needs a better recreation icon, so just use generic (default) for now
4735 #sprite_default: sports
4738 kind: [place_of_worship, wayside_chapel]
4741 sprite: function() { return feature.religion; }
4742 sprite_default: place_of_worship
4743 # TODO: some or all of this may be unnecessary for the sprite, but is necessary for the early filter
4746 kind: [apartments, auditorium, building, hangar, manor, recreation_center, retirement_home, terminal]
4753 # show labels for smaller landuse areas at higher zooms
4754 - { $zoom: [14], area: { max: 200000 } }
4755 - { $zoom: [15], area: { max: 20000 } }
4756 - { $zoom: [16], area: { max: 5000 } }
4757 - { $zoom: [17], area: { max: 1000 } }
4761 #end different icon sprites
4763 #most POI icons without name should be hidden, except these
4765 filter: { name: false }
4769 # eg park polygons in SF that have area but no name, sigh
4780 kind: [grass, pitch]
4781 kind_detail: [baseball, basketball, football, hockey, soccer, tennis]
4784 visible: global.icon_visible_poi_landuse_e
4790 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4792 # for different styles, different sets
4793 # since [picnic_site] doesn't have bubble-wrap icon, it's omitted here
4796 kind: [drinking_water, information, playground, toilets, traffic_signals]
4797 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4801 kind: [bicycle_parking]
4802 draw: { icons: { visible: global.icon_visible_poi_landuse_e } }
4804 # NOTE: all natural_* should only be in landuse layer
4805 suppress-icon-always:
4807 kind: [natural_forest, natural_park, natural_wood]
4815 family: global.text_font_family
4821 kind: [common, grass, houseboat, pedestrian, railway, ship, wetland]
4826 text: { font: { style: italic } }
4828 # the server should be setting better values here
4832 kind: [landmark, museum, prison]
4839 kind: [natural_forest, natural_park, natural_wood, post_office]
4847 kind: [cafe, restaurant]
4851 hide-until-z15-no-area:
4859 hide-until-z15-with-area:
4863 kind: [nursing_home]
4869 kind: [fire_station, grass, peak, police, tram_stop]
4874 hide-until-z16-no-area:
4877 kind: [allotments, college, garden, university]
4882 # no POIs for commercial, residential
4886 kind: [bank, bus_stop, car_sharing, wood, platform]
4890 hide-until-z17-with-area:
4894 kind: [common, grass, houseboat, pedestrian, pitch, railway, ship, wetland]
4898 hide-until-z17-no-area:
4902 # note: atm and drinking_water appear hear and in area versions
4903 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, playground, political_party, post_box, religion, research, subway_entrance, tax_advisor, telecommunication, telephone, theatre, therapist, toilets, traffic_signals, travel_agent, water_tower]
4909 kind: [atm, bus_stop, drinking_water]
4914 hide-until-z18-no-area:
4918 kind: [bench, parking, waste_basket]
4925 kind: [bicycle_parking, burial_vault, car_sharing]
4930 # hide based on kind and area filters
4935 # show labels for smaller landuse areas at higher zooms
4936 - { $zoom: [8], area: { max: 50000000 } }
4942 kind: [university, college]
4944 # show labels for smaller landuse areas at higher zooms
4945 - { $zoom: [11], area: { max: 2000000 } }
4946 - { $zoom: [12], area: { max: 500000 } }
4952 kind: [school, kindergarten]
4954 # show labels for smaller landuse areas at higher zooms
4955 - { $zoom: [13], area: { max: 100000 } }
4956 - { $zoom: [14], area: { max: 50000 } }
4957 - { $zoom: [15], area: { max: 10000 } }
4958 - { $zoom: [16], area: { max: 5000 } }
4959 - { $zoom: [17], area: { max: 2000 } }
4965 kind: [garden, allotments]
4967 # limit show smaller landuse areas to higher zooms
4968 - { $zoom: [12], area: { max: 500000 } }
4969 - { $zoom: [13], area: { max: 100000 } }
4970 - { $zoom: [14], area: { max: 10000 } }
4971 - { $zoom: [15], area: { max: 5000 } }
4978 # limit show smaller landuse areas to higher zooms
4980 - { $zoom: [12], area: { max: 3000000 } }
4988 - { $zoom: [12], area: { max: 2500000 } }
4994 - { kind: [insurance, office, company], $zoom: [15], area: { max: 10000 } }
4995 - { kind: [insurance, office, company], $zoom: [16], area: { max: 5000 } }
4999 landuse-labels-green-areas-not-national-park:
5001 kind: [park, conservation, protected_area, nature_reserve, forest, grass]
5003 # show labels for smaller landuse areas at higher zooms
5004 - { $zoom: { max: 6 }, area: true }
5005 - { $zoom: [6], area: { max: 5000000000 } }
5006 - { $zoom: [7], area: { max: 5000000000 } }
5007 - { $zoom: [8], area: { max: 1000000000 } }
5008 - { $zoom: [9], area: { max: 100000000 } }
5009 - { $zoom: [10], area: { max: 50000000 } }
5010 - { $zoom: [11], area: { max: 25000000 } }
5011 - { $zoom: [12], area: { max: 5000000 } }
5012 - { $zoom: [13], area: { max: 200000 } }
5013 - { $zoom: [14], area: { max: 50000 } }
5014 - { $zoom: [15], area: { max: 10000 } }
5015 - { $zoom: [16], area: { max: 1000 } }
5019 wilderness-areas-early:
5020 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' ); }
5025 filter: function() { return feature.name && !((feature.name.indexOf("National Park") > -1) || feature.name.indexOf("National Monument") > -1); }
5027 filter: { $zoom: { max: 8 } }
5031 landuse-labels-not-any-above:
5034 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] }
5039 filter: { $zoom: { max: 14 }, kind: glacier, area: false }
5044 # set special priority, sprite, and text styles per kind
5046 # filter: { area: true }
5051 national-park-protected-areas:
5053 kind: [national_park, battlefield]
5056 visible: global.icon_visible_landuse_green
5057 size: global.icon_size_green
5060 visible: global.text_visible_landuse_green
5062 fill: [0.200,0.409,0.398] #*text_fill_park
5065 filter: { $zoom: { min: 14 } }
5069 size: global.icon_size_green_l
5072 - kind: [park, conservation, grass]
5073 - { kind: protected_area, not: { protect_class: [6, '6'] } }
5076 visible: global.icon_visible_landuse_green
5077 size: global.icon_size_green
5080 visible: global.text_visible_landuse_green
5082 fill: [0.181,0.370,0.361]
5085 filter: { kind: [grass], $zoom: { min: 16 } }
5095 - { kind: protected_area, protect_class: [6, '6'] }
5098 visible: global.icon_visible_landuse_green
5099 size: global.icon_size_green
5102 visible: global.text_visible_landuse_green
5104 fill: [0.181,0.370,0.361]
5111 visible: global.icon_visible_landuse_green
5112 size: global.icon_size_green
5114 visible: global.text_visible_landuse_green
5116 fill: global.text_fill_beach
5119 kind: [airport, aerodrome]
5122 visible: global.icon_visible_landuse_green
5123 size: global.icon_size_green
5126 visible: global.text_visible_landuse_green
5127 text_source: global.ux_language_text_source_iata
5129 filter: { $zoom: [9,10,11] }
5130 draw: { icons: { text: { text_source: iata } } }
5134 kind: [enclosure, animal]
5161 # landuse-labels-not-any-above:
5163 # 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] }
5169 filter: { kind: [commercial,residential,warehouse,public,dormitory], osm_relation: false }
5174 station-train-subway:
5175 filter: { kind: [station, train_station] }
5178 visible: global.icon_visible_station
5179 size: [[13, 12px], [14, 12px], [15, 16px], [17, 18px], [18, 20px]]
5182 visible: global.text_visible_station
5189 # for a transit style we'd want to see **all**, so don't move this above (it's special to this style)
5191 filter: { kind_tile_rank: { min: 5 }, $zoom: { min: 0, max: 13 } }
5195 low-priority-early-z13:
5196 filter: { kind_tile_rank: { min: 5 }, $zoom: [13] }
5200 low-priority-early-z14:
5201 filter: { kind_tile_rank: { min: 7 }, $zoom: [14] }
5204 text: { visible: false }
5206 garden-no-area-early:
5207 filter: { kind: [garden, allotments], $zoom: [16], area: false }
5212 text: { font: { size: 10px, style: italic } }
5213 garden-no-area-later:
5214 filter: { kind: [garden, allotments], $zoom: { min: 17 }, area: false }
5219 text: { font: { size: 11px, style: italic } }
5221 filter: { kind: gate, name: true }
5222 draw: { icons: { sprite: generic } }
5231 visible: global.text_visible_poi_landuse
5235 filter: { kind: [tower], label_placement: true }
5244 # TODO: this isn't working, should see small icons near the transbay terminal in SF
5256 filter: { $zoom: { max: 19 } }
5263 filter: { kind: aeroway_gate }
5268 visible: global.text_visible_airport_gate
5272 fill: global.text_fill_exits
5273 size: [[16,9px],[17,12px],[20,14px]]
5275 filter: { $zoom: { min: 19 } }
5283 filter: { kind: motorway_junction, $zoom: { min: 14 } }
5288 visible: global.text_visible_exits
5293 fill: global.text_fill_exits
5294 size: [[12,9px],[15,12px],[17,14px]]
5295 stroke: { color: global.text_stroke, width: [[12,2px],[14,3px],[15,3px]] }
5297 filter: { $zoom: { min: 16 } }
5305 data: { source: mapzen, layer: earth }
5306 filter: { name: true }
5309 text_source: global.ux_language_text_source
5311 filter: { kind: [continent], $zoom: { max: 5 } }
5314 visible: global.text_visible_continent
5315 text_source: global.ux_language_text_source_continent_stacked_only
5319 size: [[1,11px],[3,14px]]
5320 fill: [0.762,0.525,0.428]
5321 transform: uppercase
5323 filter: { $zoom: { min: 2 } }
5326 text_source: global.ux_language_text_source_continent
5328 filter: { kind: [archipelago, island, islet] }
5331 visible: global.text_visible_island
5336 fill: global.text_fill
5338 stroke: { color: global.text_stroke, width: 4 }
5339 #transform: uppercase
5342 data: { source: mapzen }
5345 order: global.feature_order
5348 order: global.feature_order
5351 order: global.feature_order
5352 #debug for polygon merging
5355 # if( feature.id ) {
5361 #debug for polygon merging
5364 # if( feature.id ) {
5366 # 0.7 * (parseInt(feature.id, 16) / 100 % 1), // jshint ignore:line
5367 # 0.7 * (parseInt(feature.id, 16) / 10000 % 1), // jshint ignore:line
5368 # 0.7 * (parseInt(feature.id, 16) / 1000000 % 1), // jshint ignore:line
5372 # if( feature.scale_rank == 6 ) {
5373 # return [1.,0.,0.,1];
5374 # } else if( feature.scale_rank == 5 ) {
5375 # return [0.,1.,0.,1];
5376 # } else if( feature.scale_rank == 4 ) {
5377 # return [0.,0.,1.,1];
5378 # } else if( feature.scale_rank == 3 ) {
5379 # return [0.,0.,0.5,1];
5380 # } else if( feature.scale_rank == 2 ) {
5381 # return [0.,0.5,0.,1];
5382 # } else if( feature.scale_rank == 1 ) {
5383 # return [0.,0.5,0.,1];
5384 # } else if( feature.scale_rank == 0 ) {
5385 # return [0.5,0.,0.,1];
5387 # return [0.5,0.5,0.5,1];
5392 order: global.feature_order
5397 - label_placement: true
5399 - function() { return global.text_visible_landuse_generic; }
5402 text_source: global.ux_language_text_source
5403 interactive: global.sdk_interactive
5404 move_into_tile: true
5408 family: global.text_font_family
5411 stroke: { color: global.text_stroke_address, width: 1 }
5417 - kind: [national_park, battlefield, protected_area]
5419 - not: { operator: [ "United States Forest Service" ] }
5420 - protect_class: ['2','3','5']
5423 color: [[4,[0.655,0.800,0.796]],[8,[0.588,0.780,0.773]]]
5424 # todo: what is this?
5428 # yosemite national park, death valley national park, grand canyon national park
5431 - operator: [ "United States National Park Service" ]
5432 - protect_class: ['2','3','5']
5435 color: [[4,[0.525,0.765,0.686]],[9,[0.416,0.737,0.631]]]
5438 # color: [[4,[0.242,0.737,0.712]],[12,[0.224,0.682,0.659]]]
5444 - kind: [protected_area, nature_reserve, national_park]
5445 - not: { protect_class: ['2','3','5'] }
5448 # effectively the wilderness color
5449 color: [[0,[0.442,0.960,0.865]],[11,[0.2,0.850,0.765]]] #red #[0.420,0.808,0.698]
5452 national_forest_level_6:
5457 - protect_class: ['6']
5458 - operator: ['United States Forest Service']
5461 color: [0.442,0.960,0.865] #*green7
5464 # gotta be a protected area to draw green, not just a landcover type
5467 kind: [farm, farmland]
5471 color: [0.600,0.790,0.714]
5472 visible: global.green4_v
5474 filter: { kind: [forest, natural_forest, wood, natural_wood, natural_park], $zoom: { min: 10 }, not: { operator: "United States Forest Service" } }
5477 color: [0.70,0.990,0.92] #[0.486,0.839,0.722]
5480 parks-and-national-forests-not-national-park:
5484 - kind: [park, national_park]
5486 - not: { operator: [ "United States National Park Service", "United States Forest Service" ] }
5487 - not: { protect_class: ['2','3','5','6'] }
5488 # default for national forests and more?
5491 # color: [[4,[0.655,0.800,0.796]],[11,[0.588,0.780,0.773]],[12,[0.242,0.737,0.712]],[14,[0.412,0.733,0.718]],[15,[0.635,0.792,0.788]]]
5492 color: [[4,[0.655,0.800,0.796]],[11,[0.588,0.780,0.773]],[12,[0.635,0.792,0.788]]]
5495 #filter: function() { return feature.name && (feature.name.indexOf('National Park') > -1); }
5498 - kind: national_park
5499 - not: [ protect_class: ['2','3','5','6'], operator: [ "United States National Park Service"] ]
5502 color: [[4,[0.525,0.765,0.686]],[9,[0.416,0.737,0.631]]]
5504 filter: { kind: [urban, rural, residential] }
5505 visible: global.earth2_v
5508 color: [[0, global.earth2],[9, global.earth2]]
5509 visible: global.earth2_v
5516 color: [0.805,0.805,0.825]
5523 color: [0.722,0.769,0.827]
5527 kind: [university, college]
5530 color: [0.827,0.753,0.682]
5538 color: global.green2
5545 color: [0.855,0.748,0.667]
5546 visible: global.grey1_v
5552 color: [0.353,0.812,0.545]
5559 color: [0.843,0.624,0.647]
5566 color: [[8,[0.845,0.845,0.845]],[14,[0.835,0.835,0.835]],[15,[0.780,0.780,0.780]]]
5569 filter: { kind: [plant, generator, substation] }
5572 color: [0.679,0.679,0.679]
5579 color: [0.898,0.910,0.918]
5586 color: global.green10
5589 kind: recreation_ground
5592 color: global.green1
5599 color: [0.955,0.752,0.650]
5600 visible: global.grey1_v
5606 color: [0.624,0.690,0.761]
5610 kind: [zoo, wildlife_park]
5613 color: [0.498,1.000,0.851]
5621 visible: global.grey8_v
5623 filter: { kind: [pier,wastewater_plant,works,bridge,tower,breakwater,water_works,groyne,dike,cutline] }
5626 color: [0.690,0.690,0.690]
5629 filter: { kind: [pier,bridge,breakwater,groyne,dike,cutline] }
5632 color: [0.679,0.679,0.679]
5645 color: global.grey10
5652 color: [0.780,0.740,0.538]
5657 kind: [garden, allotments]
5660 color: [0.604,0.973,0.722]
5666 - $zoom: { min: 14 }
5668 - { $zoom: { min: 14 }, area: { min: 10000 } }
5669 - { $zoom: { min: 15 }, area: { min: 5000 } }
5672 color: [0.765,0.765,0.765]
5673 visible: global.grey1_v
5675 filter: { $zoom: { max: 15 } }
5678 color: global.grey1_e
5682 kind: [pedestrian,common]
5685 color: [0.740,0.740,0.740]
5686 visible: global.grey1_v
5692 color: [0.584,0.843,0.792]
5698 # color: [0.890,0.970,1.000]
5699 # # color: [0.975,0.975,0.828]
5703 filter: { kind: pitch }
5706 color: [0.490,0.812,0.631]
5710 kind: place_of_worship
5713 color: [0.910,0.972,1.000]
5714 visible: global.grey1_v
5720 color: [0.584,0.843,0.792]
5727 color: [0.749,0.722,0.694]
5739 color: [0.765,0.765,0.765]
5743 # 18/41.19776/-8.68722
5749 order: 501 # function() { return feature.sort_rank; }
5750 color: [0.602,0.860,0.722]
5751 width: [[16,1px],[17,2px],[19,1.5m]]
5754 # 20/37.76779/-122.40096
5760 order: 500 # function() { return feature.sort_rank; }
5761 color: [0.602,0.860,0.722]
5762 width: [[16,0.5px],[17,1px],[19,1m]]
5764 landuse-not-filtered:
5765 # runways and taxiways are also in the roads layer as lines
5766 # these ones are probably duplicate features, but have AREA (a good thing)
5775 - trail_riding_station
5784 order: global.feature_order
5787 order: global.feature_order
5791 order: global.feature_order
5798 color: [[10,[0.4,0.4,0.4]],[11,[0.50,0.50,0.50]],[12,[0.7,0.7,0.7]],[13,[0.75,0.75,0.75]],[14,[0.95,0.95,0.95]]]
5800 filter: { $zoom: [9] }
5811 color: [0.820,0.820,0.820]
5812 minor-amusement-park-landuse:
5818 - trail_riding_station
5823 color: global.grey12
5834 color: global.green11
5837 landuse_urban_area-early:
5839 # This is from Natural Earth and only shows up from zoom(0,9)
5843 visible: global.earth2_ev
5844 order: global.feature_order
5845 color: [[4,[0.965,0.600,0.882]],[6,[0.965,0.600,0.882]],[7,[0.882,0.639,0.827]],[8,[0.757,0.729,0.753]]]
5847 transit-overlay-rail-lines:
5848 data: { source: mapzen, layer: transit }
5851 - not: { kind: [platform, railway] }
5852 - function() { return global.sdk_transit_overlay; }
5857 width: [[5,1.5px],[6,2px],[11,3px],[18,4px]]
5859 color: [1.,1.,1.,.8]
5860 width: [[7,0px],[8,0.25px],[9,0.5px],[12,1.0px],[13,1.75px],[14,2px]]
5861 #width: [[12,1.0px],[13,1.75px],[14,2px]]
5863 filter: { kind: train }
5867 width: [[5,1.0px],[6,1.0px],[7,1.25px],[11,2.0px],[13,2.5px],[18,3.5px]]
5869 width: [[12,1.0px],[13,1.75px],[14,2px]]
5870 stack-below-other-transit-later-zooms:
5871 filter: { $zoom: { min: 9 } }
5876 filter: { kind: subway }
5879 width: [[9,1px],[11,2px],[12,3px],[13,4px],[15,5px],[16,7px],[17,9px]]
5881 #color: [[10,white],[11,black]]
5882 width: [[9,0px],[10,0.5px],[12,1.25px],[13,1.5px],[15,2px]]
5883 #width: [[12,1.5px],[13,2.0px],[14,2.5px]]
5884 light-rail-and-tram-sizing:
5885 filter: { kind: [light_rail, tram] }
5888 width: [[10,1px],[12,1.5px],[15,2px],[18,3.5px]]
5890 #color: [[11,white],[12,black]]
5891 width: [[12,0.25px],[13,0.5px],[14,1px],[16,2px]]
5893 filter: { colour: true }
5897 width: [[9,2px],[11,3px],[12,4px]]
5898 color: function() { return feature.colour || 'purple'; }
5900 #color: function() { if(feature.colour == 'silver') { return 'black'; } else { return [0.,0.,0.,.1]; } }
5901 #width: [[12,1.0px],[13,1.75px],[14,2px]]
5903 filter: { kind: train }
5908 filter: { kind: subway }
5912 light-rail-and-tram-with-color:
5913 filter: { kind: [light_rail, tram] }
5918 filter: { colour: false }
5919 train-missing-color:
5920 filter: { kind: train, colour: false }
5923 #width: [[5,1.25px],[6,1.75px],[11,2.0px],[13,2.5px],[18,2.5m]]
5925 subway-missing-color:
5926 filter: { kind: subway, colour: false }
5931 # width: [[12,1.5px],[13,2.0px],[14,2.5px]]
5932 light-rail-and-tram-missing-color:
5933 filter: { kind: [light_rail, tram], colour: false }
5937 labels-transit-lines:
5940 - function() { return global.sdk_transit_overlay; }
5942 - $zoom: { min: 13 }
5947 # you need to match any custom shield to the vector tile `network` values
5948 sprite: function() { return ('sdk_shield-' + feature.ref.length + 'char'); }
5949 sprite_default: sdk_shield_5char
5950 color: function() { if ( feature.kind === 'train') { return 'purple' } else { return feature.colour || 'purple'; } }
5951 # Size is specified below, and limited to 5 char in another filter
5952 repeat_group: shields
5953 repeat_distance: [[8,90px],[10,40px],[13,30px]]
5955 placement_min_length_ratio:
5963 cull_from_tile: true
5966 offset: [0px, -0.5px]
5967 repeat_distance: 200px
5969 text_source: function() { if( feature.ref.length < 6 ) { return feature.ref; } else { return ''; } }
5972 fill: function() { if(feature.colour == 'yellow') { return '#555'; } else { return 'white'; } }
5974 size: [[7,7px],[12,8px],[16,11px]]
5977 filter: function() { return (feature.ref.length === 1); }
5980 size: [[6,[16px,16px]],[13,[18px,18px]],[16,[21px,21px]]]
5982 filter: function() { return (feature.ref.length === 2); }
5985 size: [[6,[21px,16px]],[13,[24px,18px]],[16,[28px,21px]]]
5987 filter: function() { return (feature.ref.length === 3); }
5990 size: [[6,[27px,16px]],[13,[31px,18px]],[16,[36px,21px]]]
5992 filter: function() { return (feature.ref.length === 4); }
5995 size: [[6,[32px,16px]],[13,[36px,18px]],[16,[41px,21px]]]
5998 filter: { $zoom: { max: 14 } }
6003 filter: function() { return (feature.ref.length === 5); }
6006 size: [[6,[37px,16px]],[13,[41px,18px]],[16,[48px,21px]]]
6009 filter: { $zoom: { max: 14 } }
6013 # this is kinda a hack
6015 filter: function() { return (feature.ref.length > 5); }
6020 z19-show-long-route-name:
6023 - function() { return global.sdk_transit_overlay; }
6024 - $zoom: { min: 19 }
6030 stroke: { color: white, width: 3px }
6032 # transit-bus-roads:
6033 # data: { source: mapzen, layer: roads }
6034 # filter: { is_bus_route: true }
6037 # visible: global.sdk_transit_overlay
6038 # interactive: false
6039 # color: [[13,[0,0,1,0.5]],[15,blue]]
6040 # width: [[11,0.5px],[12,0.8px],[16,1.25px],[18,1m]]
6041 # # let roads sort themselves past zoom 14
6043 # # but give them all the same outline
6047 transit-overlay-station-labels:
6048 data: { source: mapzen, layer: pois }
6050 kind: [station, tram_stop, bus_station, subway_entrance, halt, stop, platform, bus_stop, stop_position ]
6060 visible: global.sdk_transit_overlay
6061 size: [[13, 12px], [16, 16px], [19, 20px]]
6062 interactive: global.sdk_interactive
6066 move_into_tile: false # preserves text alignment w/icons in JS
6068 #offset: [[13, [0, 6px]], [16, [0, 8px]], [19, [0, 10px]]] # offset tracks alongside icon size (half icon height)
6069 interactive: global.sdk_interactive
6075 stroke: { color: white, width: 3 }
6077 filter: { $zoom: [14] }
6078 draw: { icons: { text: { font: { size: 11px } } } }
6080 filter: { $zoom: [15,16,17] }
6081 draw: { icons: { text: { font: { size: 12px, stroke: { width: 2 } } } } }
6083 filter: { $zoom: [18,19] }
6084 draw: { icons: { text: { font: { size: 12px, weight: 600, stroke: { width: 3 } } } } }
6086 filter: { $zoom: { min: 20 } }
6087 draw: { icons: { text: { font: { size: 14px, weight: 600, stroke: { width: 3 } } } } }
6088 station-train-subway:
6089 filter: { kind: [station, train-station, train_station] } #, $zoom: { min: 13 }
6092 sprite: train_station
6093 size: [[13, 12px], [14, 14px], [15, 16px], [17, 20px]]
6096 #offset: [[13, [0, 6px]], [14, [0, 7px]],[15, [0, 8px]], [17, [0, 10px]]]
6099 filter: { kind_tile_rank: { min: 3 }, $zoom: { min: 0, max: 12 } }
6102 size: [[12, 5px], [14, 6px], [15, 16px]]
6106 filter: { kind_tile_rank: { min: 10 }, $zoom: [10] }
6110 low-priority-early-z12:
6111 filter: { kind_tile_rank: { min: 8 }, $zoom: [12] }
6115 size: [[12, 5px], [14, 6px], [15, 16px]]
6118 low-priority-early-z13:
6119 filter: { kind_tile_rank: { min: 8 }, $zoom: [13] }
6123 size: [[12, 8px], [14, 6px], [15, 16px]]
6126 low-priority-early-z14:
6127 filter: { kind_tile_rank: { min: 7 }, $zoom: [14] }
6130 size: [[12, 10px], [14, 11px], [15, 16px]]
6135 filter: { $zoom: { min: 16 } }
6143 filter: { is_subway: true, is_train: false, $zoom: { max: 12 } }
6150 filter: { kind: [halt,stop], $zoom: { max: 15 } }
6153 size: [[15, 8px], [16, 18px]]
6154 visible: global.sdk_transit_overlay
6159 filter: { kind: [platform] }
6162 size: [[15, 8px], [16, 18px]]
6163 visible: global.sdk_transit_overlay
6168 filter: { kind: [tram_stop], $zoom: { max: 16 } }
6171 size: [[13, 0px], [14, 7px], [15, 8px]]
6172 visible: global.sdk_transit_overlay
6177 filter: { kind: tram_stop, $zoom: { min: 16 } }
6180 size: [[16, 12px], [17, 14px], [18, 18px]]
6183 #offset: [[13, [0, 6px]], [16, [0, 9px]]]
6186 kind: [platform, stop_position]
6189 size: [[13, 8px], [16, 10px], [17, 12px], [18, 18px]]
6192 interactive: global.sdk_interactive
6196 stroke: { color: white, width: 4 }
6199 kind: [bus_station, bus_stop]
6203 size: [[13, 12px], [16, 18px]]
6207 interactive: global.sdk_interactive
6212 stroke: { color: white, width: 4 }
6219 size: [[13, 8px], [19, 18px]]
6224 kind: [subway_entrance]
6227 sprite: subway_entrance
6228 size: [[17, 12px], [19, 14px]]
6231 #offset: [[17, [0, 6px]], [19, [0, 7px]]] # offset tracks alongside icon size (half icon height)
6233 interactive: global.sdk_interactive
6234 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"; } }
6238 stroke: { color: white, width: 4 }
6240 # transit-platforms:
6241 # data: { source: mapzen, layer: transit }
6242 # filter: { kind: platform, $zoom: { min: 15 }, $geometry: [polygon,line] }
6245 # visible: global.sdk_transit_overlay
6247 # width: 10m # something fishy here with the #include syntax in v0.7 tangram?
6248 # order: 1000 # this selection should sort above basemap, but grey Zinc color still applies
6252 # visible: global.sdk_transit_overlay
6255 # filter: { $geometry: polygon }
6261 # width: [[15,0px],[16,0.5px],[17,1px],[19,2px]]