// --------------------------------------------------------------------- // Common Colors // You don't need to set up @variables for every color, but it's a good // idea for colors you might be using in multiple places or as a base // color for a variety of tints. // Eg. @water is used in the #water and #waterway layers directly, but // also in the #water_label and #waterway_label layers inside a color // manipulation function to get a darker shade of the same hue. @land: #f8f4f0; @water: #a0c8f0; @state_text: #765; @state_halo: @place_halo; Map { background-color:@land; } // --------------------------------------------------------------------- // Political boundaries #boundary { opacity: 0.5; line-join: round; line-color: #446; // Countries [admin_level=2] { line-width: 0.8; line-cap: round; [zoom>=4] { line-width: 1.2; } [zoom>=6] { line-width: 2; } [zoom>=8] { line-width: 4; } [disputed=1] { line-dasharray: 4,4; } } } // States / Provices / Subregions #place[class='state'][zoom>=4][zoom<=10] { text-name: @name; text-face-name: @sans_lt; text-placement: point; text-fill: @state_text; text-halo-fill: fadeout(lighten(@land,5%),50%); text-halo-radius: 1; text-halo-rasterizer: fast; text-size: 9; [zoom>=5][zoom<=6] { text-size: 12; text-wrap-width: 40; } [zoom>=7][zoom<=8] { text-size: 14; text-wrap-width: 60; } [zoom>=9][zoom<=10] { text-halo-radius: 2; text-size: 16; text-character-spacing: 2; text-wrap-width: 100; } } // --------------------------------------------------------------------- // Water Features #water { polygon-fill: @water - #111; // Map tiles are 256 pixels by 256 pixels wide, so the height // and width of tiling pattern images must be factors of 256. polygon-pattern-file: url(pattern/wave.png); [zoom<=5] { // Below zoom level 5 we use Natural Earth data for water, // which has more obvious seams that need to be hidden. polygon-gamma: 0.4; } ::blur { // This attachment creates a shadow effect by creating a // light overlay that is offset slightly south. It also // create a slight highlight of the land along the // southern edge of any water body. polygon-fill: #f0f0ff; comp-op: soft-light; image-filters: agg-stack-blur(1,1); image-filters-inflate: true; polygon-geometry-transform: translate(0,1); polygon-clip: false; } } #waterway { line-color: @water * 0.9; line-cap: round; line-width: 0.5; [class='river'] { [zoom>=12] { line-width: 1; } [zoom>=14] { line-width: 2; } [zoom>=16] { line-width: 3; } } [class='stream'], [class='stream_intermittent'], [class='canal'] { [zoom>=14] { line-width: 1; } [zoom>=16] { line-width: 2; } [zoom>=18] { line-width: 3; } } [class='stream_intermittent'] { line-dasharray: 6,2,2,2; } } // --------------------------------------------------------------------- // Landuse areas #landcover { [class='grass'] { polygon-fill: #d8e8c8; } ::overlay { // Landuse classes look better as a transparent overlay. opacity: 0.1; [class='wood'] { polygon-fill: #6a4; polygon-gamma: 0.5; } } } #landuse { // Land-use and land-cover are not well-separated concepts in // OpenStreetMap, so this layer includes both. The 'class' field // is a highly opinionated simplification of the myriad LULC // tag combinations into a limited set of general classes. [class='cemetery'] { polygon-fill: mix(#d8e8c8, #ddd, 25%); } [class='hospital'] { polygon-fill: #fde; } [class='school'] { polygon-fill: #f0e8f8; } } // --------------------------------------------------------------------- // Buildings #building [zoom<=17]{ // At zoom level 13, only large buildings are included in the // vector tiles. At zoom level 14+, all buildings are included. polygon-fill: darken(@land, 50%); opacity: 0.1; } // Seperate attachments are used to draw buildings with depth // to make them more prominent at high zoom levels #building [zoom>=18]{ ::wall { polygon-fill:mix(@land, #000, 85); } ::roof { polygon-fill: darken(@land, 5%); polygon-geometry-transform:translate(-1,-1.5); polygon-clip:false; line-width: 0.5; line-color: mix(@land, #000, 85); line-geometry-transform:translate(-1,-1.5); line-clip:false; } } // --------------------------------------------------------------------- // Aeroways #aeroway [zoom>=12] { ['mapnik::geometry_type'=2] { line-color: @land * 0.96; [class='runway'] { line-width: 5; } [class='taxiway'] { line-width: 1; [zoom>=15] { line-width: 2; } } } ['mapnik::geometry_type'=3] { polygon-fill: @land * 0.96; [class='apron'] { polygon-fill: @land * 0.98; } } }