Created
January 23, 2017 12:39
-
-
Save hjanetzek/8f2d8c4c7e485fdc0479e5ace6eb5d14 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| global: | |
| feature_order: function () { return feature.sort_rank | 0; } | |
| fonts: | |
| Montserrat: | |
| url: https://fonts.gstatic.com/s/montserrat/v7/zhcz-_WihjSQC0oHJ9TCYL3hpw3pgy2gAi-Ip7WPMi0.woff | |
| Open Sans: | |
| - weight: 400 | |
| url: https://fonts.gstatic.com/s/opensans/v13/wMws1cEtxWZc6AZZIpiqWALUuEpTyoUstqEm5AMlJo4.woff | |
| - weight: 400 | |
| style: italic | |
| url: https://fonts.gstatic.com/s/opensans/v13/O4NhV7_qs9r9seTo7fnsVLO3LdcAZYWl9Si6vvxL-qU.woff | |
| scene: | |
| background: | |
| color: '#f0ebeb' | |
| cameras: | |
| iso-camera: | |
| # Manhattan | |
| position: [-74.00976419448854, 40.70532700869127, 16] | |
| type: isometric | |
| axis: [0, 1] | |
| active: false | |
| perspective-camera: | |
| # Manhattan | |
| position: [-74.00976419448854, 40.70532700869127, 16] | |
| type: perspective | |
| fov: 45 | |
| max_tilt: [[2, 0], [16, 90]] | |
| active: true | |
| lights: | |
| light1: | |
| type: directional | |
| origin: world | |
| direction: [1, 1, -1] | |
| diffuse: [.3, .3, .3, 1.] | |
| ambient: [0.7, 0.7, 0.7, 1.] | |
| textures: | |
| pois: | |
| url: img/poi_icons_32.png | |
| sprites: | |
| plane: [0, 0, 32, 32] | |
| tree: [0, 185, 32, 32] | |
| sunburst: [0, 629, 32, 32] | |
| restaurant: [0, 777, 32, 32] | |
| cafe: [0, 814, 32, 32] | |
| museum: [0, 518, 32, 32] | |
| bar: [0, 887, 32, 32] | |
| train: [0, 74, 32, 32] | |
| bus: [0, 148, 32, 32] | |
| hospital: [0, 444, 32, 32] | |
| parking: [0, 1073, 32, 32] | |
| info: [0, 1110, 32, 32] | |
| hotel: [0, 259, 32, 32] | |
| bookstore: [0, 333, 32, 32] | |
| shield: [0, 1142, 32, 32] | |
| arrow: [1, 1175, 22, 22] | |
| styles: | |
| heightglow: | |
| base: polygons | |
| lighting: vertex | |
| shaders: | |
| blocks: | |
| color: "color.rgb += vec3(worldPosition().z / 800.);" | |
| heightglowline: | |
| base: lines | |
| mix: heightglow | |
| icons: | |
| base: points | |
| texture: pois | |
| dashed: | |
| base: lines | |
| dash: [2, 1] | |
| transit-lines: | |
| base: lines | |
| blend: overlay | |
| blend_order: -2 | |
| shaders: | |
| blocks: | |
| filter: | | |
| color.rgb *= 1.25; // pump up the colors | |
| color.a = 0.5; // translucent | |
| sources: | |
| osm: | |
| type: MVT | |
| #url: https://tile.mapzen.com/mapzen/vector/v1/all/{z}/{x}/{y}.mvt | |
| mbtiles: berlin_germany.mbtiles | |
| max_zoom: 14 | |
| # url_params: | |
| # api_key: vector-tiles-tyHL4AY | |
| layers: | |
| touch: | |
| data: { source: touch } | |
| line: | |
| filter: { type: line } | |
| draw: | |
| lines: | |
| color: function () { return feature.color || 'black'; } | |
| order: 50 | |
| width: 2px | |
| poly: | |
| filter: { type: poly } | |
| draw: | |
| polygons: | |
| color: magenta | |
| order: 40 | |
| point: | |
| filter: { type: point } | |
| draw: | |
| icons: | |
| sprite: sunburst | |
| collide: false | |
| transition: { show: { time: 0s }, hide: { time: 0s } } | |
| boundary: | |
| data: | |
| source: osm | |
| layer: boundary | |
| earth: | |
| data: { source: osm } | |
| continents: | |
| filter: { kind: continent, $geometry: point } | |
| draw: | |
| text: | |
| priority: 1 | |
| font: | |
| family: Open Sans | |
| size: 12px | |
| fill: [0, 0, 0, .8] | |
| stroke: { color: white, width: 4 } | |
| transform: uppercase | |
| landcover: | |
| data: { source: osm } | |
| #rfilter: | |
| #- { $zoom: { min: 16 } } | |
| #TODO: "px2" range unit support for ES, and remove extended any area filter | |
| # - any: | |
| # - { $zoom: { min: 9 }, area: { min: 10000000 } } | |
| # - { $zoom: { min: 10 }, area: { min: 3300000 } } | |
| # - { $zoom: { min: 12 }, area: { min: 1000000 } } | |
| # - { $zoom: { min: 13 }, area: { min: 10000 } } | |
| # - { $zoom: { min: 15 } } | |
| #- { area: { min: 500px2 } } | |
| areas: | |
| draw: | |
| polygons: | |
| order: 2 | |
| color: honeydew | |
| residential: | |
| filter: { class: grass } | |
| draw: | |
| polygons: | |
| color: 'lightgreen' | |
| landuse: | |
| data: { source: osm } | |
| #rfilter: | |
| #- { $zoom: { min: 16 } } | |
| #TODO: "px2" range unit support for ES, and remove extended any area filter | |
| # - any: | |
| # - { $zoom: { min: 9 }, area: { min: 10000000 } } | |
| # - { $zoom: { min: 10 }, area: { min: 3300000 } } | |
| # - { $zoom: { min: 12 }, area: { min: 1000000 } } | |
| # - { $zoom: { min: 13 }, area: { min: 10000 } } | |
| # - { $zoom: { min: 15 } } | |
| #- { area: { min: 500px2 } } | |
| areas: | |
| draw: | |
| polygons: | |
| order: global.feature_order | |
| color: honeydew | |
| residential: | |
| filter: { class: residential } | |
| draw: | |
| polygons: | |
| color: '#eeeeee' | |
| parks: | |
| filter: { class: [park, graveyard, cemetery, forest, recreation_ground] } | |
| draw: | |
| polygons: | |
| color: '#bddec5' | |
| park-detail: | |
| filter: { class: [pitch, wood, natural_wood, grass] } | |
| draw: | |
| polygons: | |
| color: '#9dbea5' | |
| industry: | |
| filter: { class: [commercial, industrial] } | |
| draw: | |
| polygons: | |
| color: '#C0CDCD' | |
| civic: | |
| filter: { class: university } | |
| draw: | |
| polygons: | |
| color: '#D9CFC3' | |
| urban: | |
| filter: { class: urban_area } | |
| draw: | |
| polygons: | |
| # color: [0.902, 0.835, 0.753, 1.00] | |
| color: [[7, lightgrey], [9, [.88, .88, .88]]] | |
| # color: lightgrey | |
| water: | |
| data: { source: osm } | |
| draw: | |
| polygons: | |
| order: global.feature_order | |
| color: '#9dc3de' | |
| oceans: | |
| filter: { class: ocean } | |
| visible: true | |
| draw: | |
| text: | |
| font: | |
| family: Open Sans | |
| size: 14pt | |
| style: italic | |
| seas: | |
| filter: { class: sea, $zoom: { min: 7 } } | |
| visible: true | |
| draw: | |
| text: | |
| font: | |
| family: Open Sans | |
| size: 12pt | |
| style: italic | |
| transportation: | |
| data: { source: osm } | |
| filter: { not: { class: rail } } | |
| draw: | |
| lines: | |
| color: white | |
| # color: function() { return [Math.random(), Math.random(), Math.random()] } | |
| width: 12 | |
| order: 6 | |
| outline: | |
| color: [[16, '#999'], [18, '#aaa']] | |
| width: [[15, 0], [16, 2]] | |
| order: 352 # put all outlines below all roads | |
| rounded: | |
| filter: { $zoom: { min: 18 } } | |
| draw: | |
| lines: | |
| cap: round | |
| highway: | |
| filter: { class: [motorway, trunk] } | |
| draw: | |
| lines: | |
| color: [[5, '#F89595'], [7, '#D16768']] | |
| width: [[5, 1px], [8, 1.5px], [14, 2px], [15, 12]] | |
| outline: | |
| width: [[14, 0], [15, 2]] | |
| link: | |
| filter: { is_link: true } | |
| draw: | |
| lines: | |
| color: '#aaa' | |
| width: [[13, 0], [14, 12]] | |
| major_road: | |
| filter: { class: primary, $zoom: { min: 10 } } | |
| draw: | |
| lines: | |
| color: '#ed0' | |
| width: [[10, 0], [13, 2px], [14, 2px], [16, 12]] | |
| outline: | |
| width: [[16, 0], [17, 1]] | |
| minor_road: | |
| filter: { class: minor_road } | |
| draw: | |
| lines: | |
| width: [[13, 0px], [14, 1px], [15, 8]] | |
| outline: | |
| width: [[17, 0], [18, 1]] | |
| paths: | |
| filter: { class: path } | |
| draw: | |
| lines: | |
| style: dashed | |
| color: white | |
| width: [[15, 0px], [18, 3px]] | |
| outline: | |
| width: 0 | |
| # apply outline to roads intersecting parks - see data source transform example in `sources` | |
| land: | |
| filter: { intersects_park: true } | |
| draw: | |
| lines: | |
| outline: | |
| style: lines | |
| color: red | |
| width: 1px | |
| ferry: | |
| filter: { class: ferry } | |
| draw: | |
| lines: | |
| style: dashed | |
| color: '#8db3ce' | |
| width: [[14, 1px], [18, 2px]] | |
| outline: | |
| width: 0 | |
| airports: | |
| filter: { class: aeroway } | |
| draw: | |
| lines: | |
| color: '#ddd' | |
| outline: | |
| width: 0 | |
| taxiways: | |
| filter: { class_detail: taxiway } | |
| draw: | |
| lines: | |
| width: [[13, 0px], [14, 2px], [17, 10px]] | |
| runways: | |
| filter: { kind_detail: runway } | |
| draw: | |
| lines: | |
| color: [[13, '#FFE4B5'], [16, white]] | |
| width: [[11, 3px], [12, 5px], [13, 10px], [15, 75]] | |
| cap: square | |
| outline: | |
| color: orange | |
| width: [[11, 0px], [12, 1px], [13, 2px], [15, 12.5]] | |
| arrows: | |
| # oneway arrows and shields are distinct groups! | |
| filter: { oneway: yes, shield_text: false, $zoom: { min: 17 } } | |
| draw: | |
| icons: | |
| flat: true | |
| sprite: arrow | |
| size: [[17, 18px], [18, 20px], [20, 32px]] | |
| placement: spaced | |
| placement_spacing: [[17, 70px], [20, 175px]] | |
| angle: auto | |
| shields: | |
| filter: | |
| network: 'US:I' # US interstates only in this demo | |
| shield_text: true | |
| draw: | |
| icons: | |
| sprite: shield | |
| # sprite: function() { return feature.network } | |
| priority: 2 | |
| color: white | |
| size: 24px | |
| placement: midpoint | |
| repeat_group: shields | |
| text: | |
| repeat_distance: 150px | |
| anchor: center | |
| text_source: shield_text | |
| font: | |
| family: sans-serif | |
| size: 11px | |
| fill: white | |
| # thin-out shields at low-zoom | |
| thinning: | |
| filter: { $zoom: { max: 11 } } | |
| draw: | |
| icons: | |
| repeat_distance: 75px | |
| transportation_name: | |
| data: { source: osm } | |
| labels: | |
| # filter: 'function() { print("check!"); return true; }' | |
| # name: true | |
| # not: { class: [rail, aeroway] } | |
| draw: | |
| # lines: | |
| # order: 100 | |
| # color: '#f00' | |
| # width: 1px | |
| text: | |
| interactive: true | |
| transition: { show: { time: 0s }, hide: { time: 1s } } | |
| font: | |
| family: Open Sans | |
| fill: '#666' | |
| size: 12px | |
| highway: | |
| filter: { class: [motorway, trunk] } | |
| draw: | |
| text: | |
| repeat_distance: 200px | |
| repeat_group: road_labels | |
| priority: 2 | |
| font: | |
| stroke: { color: white, width: 4 } | |
| transform: capitalize | |
| major_road: | |
| filter: { class: primary, $zoom: { min: 13 } } | |
| draw: | |
| text: | |
| repeat_distance: 100px | |
| repeat_group: roads | |
| priority: 3 | |
| font: | |
| size: 14px | |
| stroke: { color: white, width: 4 } | |
| minor_road: | |
| filter: { class: minor_road, $zoom: { min: 15 } } | |
| draw: | |
| text: | |
| priority: 5 | |
| font: | |
| stroke: { color: white, width: 4 } | |
| ferry: | |
| filter: { class: ferry } | |
| draw: | |
| text: | |
| text_wrap: 20 | |
| font: | |
| fill: '#8db3ce' | |
| stroke: { color: white, width: 4px } | |
| style: italic | |
| building: | |
| data: { source: osm } | |
| filter: { $zoom: { min: 14 } } | |
| draw: | |
| polygons: | |
| style: heightglow | |
| order: 10 # global.feature_order | |
| color: [.83, .83, .83] | |
| # turn interactive feature selection on for buildings with names | |
| interactive: | |
| filter: { name: true } | |
| draw: { polygons: { interactive: true } } | |
| # extrude 3d buildings | |
| extruded: | |
| #filter: { $zoom: { min: 15 } } | |
| draw: | |
| polygons: | |
| #extrude: function () { return feature.render_height > 20 || $zoom >= 16; } | |
| extrude: | | |
| function () { | |
| return [feature.render_min_height, feature.render_height ]; | |
| } | |
| # lines: | |
| # style: heightglowline | |
| # width: 1.0 | |
| # color: [.75, .75, .73] | |
| # #order: function() { return feature.sort_key + 1 || 0; } | |
| # extrude: true | |
| high-line: | |
| filter: { roof_material: grass } | |
| draw: | |
| polygons: | |
| style: polygons | |
| color: '#bddec5' | |
| # point labels for buildings | |
| labels: | |
| filter: | |
| $geometry: point | |
| name: true | |
| any: | |
| - { $zoom: { min: 17 }, height: { min: 50 } } | |
| - $zoom: { min: 18 } | |
| draw: | |
| text: | |
| priority: 7 | |
| font: | |
| family: Open Sans | |
| size: 8pt | |
| fill: darkred | |
| stroke: { color: white, width: 3 } | |
| pois: | |
| data: { source: osm } | |
| draw: | |
| icons: | |
| interactive: true | |
| collide: true | |
| transition: { show: { time: 0s }, hide: { time: 1s } } | |
| text: | |
| interactive: true | |
| font: | |
| family: Open Sans | |
| style: normal | |
| size: 1.2em | |
| fill: white | |
| parks: | |
| filter: | |
| class: [park, cemetery, graveyard] | |
| any: | |
| - { $zoom: { min: 16 } } | |
| #TODO: "px2" range unit support for ES | |
| #- { area: { min: 500px2 } } | |
| draw: | |
| icons: | |
| sprite: tree | |
| priority: 2 | |
| size: 16px | |
| text: | |
| font: | |
| size: 10pt | |
| style: italic | |
| fill: darkgreen | |
| stroke: { color: white, width: 3 } | |
| forest: | |
| filter: | |
| class: forest | |
| any: | |
| - { $zoom: { min: 7 }, tier: 1 } | |
| - { $zoom: { min: 9 }, tier: { max: 3 } } | |
| draw: | |
| icons: | |
| visible: false | |
| text: | |
| priority: 2 | |
| font: | |
| size: 9pt | |
| style: italic | |
| fill: darkgreen | |
| stroke: { color: white, width: 3 } | |
| not_landuse: | |
| filter: | |
| name: true | |
| not: | |
| class: [peak, viewpoint, bicycle_rental, car_sharing, park, forest, cemetery, graveyard] | |
| $zoom: { min: 15 } | |
| draw: | |
| icons: | |
| size: [[13, 12px], [15, 18px]] | |
| interactive: true | |
| priority: 6 | |
| text: | |
| optional: true | |
| visible: false | |
| # add text label at higher zoom | |
| labels: | |
| filter: | |
| - { $zoom: { min: 17 } } | |
| - { $zoom: { min: 16 }, class: station } | |
| draw: | |
| icons: | |
| text: | |
| visible: true | |
| font: | |
| size: 12px | |
| fill: black | |
| # add generic icon at high zoom | |
| generic: | |
| filter: { $zoom: { min: 18 } } | |
| draw: { icons: { sprite: info } } | |
| # examples of different icons mapped to feature properties | |
| icons: | |
| restaurant: | |
| filter: { class: [restaurant] } | |
| draw: { icons: { sprite: restaurant } } | |
| cafe: | |
| filter: { class: [cafe, convenience] } | |
| draw: { icons: { sprite: cafe } } | |
| bar: | |
| filter: { class: [bar, pub] } | |
| draw: { icons: { sprite: bar } } | |
| culture: | |
| filter: { class: [museum, library, church, place_of_worship, bank] } | |
| draw: { icons: { sprite: museum } } | |
| station: | |
| filter: { class: [station] } | |
| draw: { icons: { sprite: train, priority: 2 } } | |
| hospital: | |
| filter: { class: [hospital, pharmacy] } | |
| draw: { icons: { sprite: hospital } } | |
| hotel: | |
| filter: { class: [hotel, hostel] } | |
| draw: { icons: { sprite: hotel } } | |
| bus_stop: | |
| filter: { class: [bus_stop] } | |
| draw: { icons: { sprite: bus } } | |
| bookstore: | |
| filter: { class: [bookstore] } | |
| draw: { icons: { sprite: bookstore } } | |
| boundaries: | |
| data: { source: osm } | |
| draw: | |
| lines: | |
| visible: false | |
| order: global.feature_order | |
| width: 2px | |
| color: wheat | |
| country: | |
| filter: { class: country } | |
| draw: | |
| lines: | |
| visible: true | |
| color: [0.824, 0.651, 0.329, 1.00] | |
| region: | |
| filter: { class: [region, macroregion] } | |
| draw: | |
| lines: | |
| visible: true | |
| places: | |
| data: { source: osm } | |
| # city labels with points | |
| city-points: | |
| filter: | |
| class: locality | |
| kind_detail: city | |
| $zoom: { max: 11 } | |
| visible: true | |
| draw: | |
| points: | |
| size: 8px | |
| color: darkred | |
| text: | |
| priority: 1 | |
| font: | |
| family: Open Sans | |
| size: 12px | |
| fill: [0, 0, 0, .8] | |
| stroke: { color: white, width: 4 } | |
| transform: uppercase | |
| weight: bold | |
| size: [[8, 11px], [12, 16px]] | |
| # places w/text-only labels (not accompanying point) | |
| text-only: | |
| draw: | |
| text: | |
| visible: false | |
| priority: 1 | |
| font: | |
| family: Open Sans | |
| size: 12px | |
| fill: [0, 0, 0, .8] | |
| stroke: { color: white, width: 4 } | |
| transform: uppercase | |
| countries: | |
| filter: | |
| class: country | |
| any: | |
| - { population: { min: 100000000 } } | |
| - { $zoom: { min: 5, max: 8 }, population: { min: 1000000 } } | |
| # - population: { min: 10000000 } | |
| draw: | |
| text: | |
| visible: true | |
| font: | |
| weight: bold | |
| size: [[6, 14px], [8, 20px]] | |
| regions: | |
| filter: | |
| class: region | |
| kind_detail: [state, province] | |
| $zoom: { min: 5, max: 9 } | |
| draw: | |
| text: | |
| visible: true | |
| font: | |
| # weight: bold | |
| size: [[6, 12px], [8, 16px]] | |
| # use short name when available at low-zooms | |
| short: | |
| filter: { $zoom: { max: 7 } } | |
| draw: | |
| text: | |
| text_source: 'name:short' | |
| cities: | |
| filter: | |
| class: locality | |
| kind_detail: city | |
| $zoom: { min: 11 } # show city point labels below z11 | |
| draw: | |
| text: | |
| visible: true | |
| font: | |
| weight: bold | |
| size: [[8, 11px], [12, 16px]] | |
| neighborhoods: | |
| filter: | |
| - { class: [neighbourhood, macrohood], $zoom: { min: 13 } } | |
| - { class: microhood, $zoom: { min: 15 } } | |
| draw: | |
| text: | |
| visible: true | |
| font: | |
| size: [[13, 11px], [14, 11px], [15, 13px]] | |
| style: italic | |
| fill: rgba(136, 45, 23, 0.9) | |
| transit: | |
| data: { source: osm } | |
| filter: { $zoom: { min: 16 } } | |
| draw: | |
| lines: | |
| style: transit-lines | |
| order: 400 | |
| color: gray | |
| width: 6px | |
| outline: | |
| color: [.8, .8, .8] | |
| width: 1px | |
| interactive: true | |
| colored: | |
| filter: { colour: true } | |
| draw: | |
| lines: | |
| color: function() { return feature.colour; } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment