Estilo do mapa
Um arquivo MapCSS contém regras aplicadas a cada objeto de cima para baixo.
Por exemplo:
node[natural=tree] {
icon-image: "tree.svg";
}
Essa regra mostra a imagem tree.svg nos pontos em que a etiqueta natural tem o valor tree.
Cada regra tem duas partes: o filtro node[natural=tree] e os parâmetros de desenho icon-image: tree.svg;. O filtro define a quais objetos os parâmetros serão aplicados.
As regras podem ser aninhadas e definir parâmetros em cada nível:
|z16- {
icon-scale: 0.50;
icon-tint: @color_icon_tint;
[amenity=bicycle_parking] {
icon-image: "bike_parking.svg";
}
[amenity=bicycle_rental] {
icon-image: "bike_rental.svg";
}
[amenity=bicycle_repair_station] {
icon-image: "bike_service.svg";
}
}
Assim, parâmetros compartilhados são definidos uma vez, sem repetição em vários blocos.
Esta documentação descreve o dialeto MapCSS usado pelo Guru Maps. Alguns parâmetros da linguagem original não foram implementados, mas há macros de pré-processamento, regras aninhadas e novas funções de cálculo. O estilo do Guru Maps está disponível no repositório.
Filtros
Considere este filtro:
node,area|z14-[boundary=forest_compartment][ref]
Ele contém:
- Filtro de tipo
node,area: usenodepara pontos,linepara linhas eareapara polígonos. Separe tipos por vírgulas ou use*quando o tipo não importar.canvasseleciona o fundo do mapa. - Filtro de zoom
z14-: define os níveis em que a regra é aplicada. Você pode indicar somente um mínimo, comoz8-, somente um máximo, comoz-9, um único nível, comoz12, ou um intervalo, comoz3-9. Os dois extremos do intervalo são incluídos:z3-9vale para os níveis 3 a 9. - Filtros de etiquetas
[boundary=forest_compartment][ref]: mantêm objetos cuja etiquetaboundarysejaforest_compartmente que tenham qualquer valor emref. Para objetos semref, use[!ref].
Todas as partes são opcionais. Um filtro de zoom pode aparecer sozinho, como |z16- no exemplo acima.
Filtros de etiquetas
| Filtro | Mantém objetos em que |
|---|---|
[ref] | a etiqueta ref existe |
[!ref] | a etiqueta ref não existe |
[highway=primary] | o valor é igual a primary |
[highway!=primary] | o valor não é primary |
[population>100000] | o valor é maior; <, >= e <= funcionam do mesmo modo |
[ele%100] | o valor é múltiplo de 100 |
[ref^=E] | o valor começa com E |
[name$=Street] | o valor termina com Street |
[name*=Park] | o valor contém Park |
[cuisine~=pizza] | pizza é um dos valores separados por ;, como em pizza;burger |
As comparações >, <, >= e <= comparam números quando os dois valores são números e, caso contrário, comparam texto.
Coloque o valor entre aspas duplas quando ele contiver apóstrofo, aspas ou ], ou quando começar ou terminar com um espaço:
[name="McDonald's"],
[ref^="B "] {
icon-image: "logo.svg";
}
Um valor entre aspas não pode conter {, }, ;, @ nem //.
Agrupamento de filtros
Vários filtros podem ser separados por vírgulas:
node,area|z14-[boundary=forest_compartment][ref],
node,area|z14-[boundary=forestry_compartment][ref]
Os parâmetros compartilhados podem ser movidos para um nível superior:
node,area|z14-[ref] {
[boundary=forest_compartment],
[boundary=forestry_compartment] {
}
}
Para agrupar filtros sem iniciar imediatamente um bloco, use parênteses:
node,area|z14-[ref](
[boundary=forest_compartment],
[boundary=forestry_compartment]) {
}
Um filtro de zoom pode valer para um grupo inteiro:
|z11-([highway=trunk], [highway=primary]) {
shield-image: "shield.svg";
}
Filtros de relação
relation[...] mantém os objetos que pertencem a uma relação com as etiquetas indicadas. Por exemplo, os trechos de rotas de caminhada:
relation[type=route][route=hiking] {
line|z9- {
color: #0000ff80;
width: 2pt;
}
}
A função relationTag lê as etiquetas dessa relação, e per-relation desenha um trecho uma vez para cada uma das suas relações.
Macros de pré-processamento
O pré-processador substitui valores e ativa ou desativa blocos de acordo com as configurações antes que o estilo seja analisado.
Macros de substituição
@import
Insere o conteúdo do arquivo indicado:
@import "polygons.mapcss";
@\{name\}
Insere o valor de uma macro:
// Define a cor
@color_ground: #EAE3D3;
// Usa a cor
canvas
{
fill-color: @color_ground;
}
Uma macro insere o próprio texto como está, por isso pode conter parte de uma expressão:
@route_band_width: zlinear(13, 5pt, 7pt, 9pt, 11pt);
line|z13- {
outline-width: eval(@route_band_width);
}
Uma macro cujo valor começa com eval( é calculada uma vez, quando o estilo é carregado.
Condições
@if
Testa um parâmetro e inclui ou exclui um bloco:
@if Theme == Dark
@import "colors_dark.mapcss";
@else // Cores padrão
@import "colors.mapcss";
@endif
Uma condição pode comparar um parâmetro com ==, !=, <, >, <= ou >=. Um valor é uma única palavra formada por letras, dígitos e _. Um parâmetro sem comparação verifica se ele está ativado; ! verifica se está desativado:
@if Food
// exibido quando o interruptor Restaurantes e cafeterias está ativado
@endif
@if !Food
// exibido quando ele está desativado
@endif
O Guru Maps oferece estes parâmetros de pré-processamento:
Theme{Light,Dark} — tema atual do aplicativo. No tema escuro, o branco puro#FFFFFFnos ícones vira cinza-escuro; use#FEFEFEpara o branco que deve continuar branco;Style{City,Outdoor} — estilo atual do mapa;SubStyle{Hike,Bike,Ski,Car}:Hike,BikeeSkisão definidos pelas variantes Outdoor do mapa para caminhada, bicicleta e esqui;Caré definido durante a navegação de carro, com qualquer estilo de mapa;
- os interruptores de Objetos de mapa nas configurações:
AllShops,Bar,Beauty,BuildingName,CityService,Culture,Education,Entertaiment,Financial,Food,Hotel,Medical,PistesAndLifts,Postal,PublicTransport,Railway,Shop,Sport. Um interruptor vale1quando está ativado e0quando está desativado. Durante a navegação de carro, todos os interruptores, excetoBuildingName, ficam desativados.
@else
Define o bloco usado quando a primeira condição é falsa.
@elif
Define outra condição caso as anteriores não correspondam.
@endif
Encerra o bloco condicional.
Comentários
// transforma o restante da linha em comentário; /* e */ delimitam um comentário de várias linhas.
Parâmetros de desenho
Estes parâmetros controlam como os objetos são desenhados.
Valores dos parâmetros
Largura
A espessura de uma linha, ou width, pode ser indicada em pixels (1px), pontos (2pt), metros (3m) ou calculada, por exemplo, com eval( zlinear( 13, 1px,1pt,max(2pt, 4m)) );. Veja Expressões. Escreva sempre a unidade: um número sem unidade é medido em unidades internas do mapa.
Cor
Use #RGB, #RRGGBB, #RRGGBBAA ou um nome da lista de cores CSS.
fill-color, casing-color, dashes-color, text-color e font-stroke-color aceitam somente uma cor. color, icon-tint, outline-color, shield-color e shield-text-color também aceitam uma expressão.
Texto e aspas
Aspas simples e duplas têm o mesmo significado. Não há caracteres de escape, então um texto não pode conter a aspa que o delimita: escreva "McDonald's" entre aspas duplas e 'say "hi"' entre aspas simples. Os exemplos desta página usam aspas duplas.
Dentro de eval(), coloque todo texto entre aspas. O nome de uma tag formado apenas por letras latinas e dígitos funciona sem aspas, então tag(name) equivale a tag("name"), mas um nome com : ou _ precisa de aspas: tag("addr:street"). Números com unidades, como 2pt, e cores, como #808080, ficam sem aspas. Neste exemplo, a paleta é um único texto, relationTag("colour") lê uma tag e #808080 é uma cor:
color: eval(mapColor("red #E53935, green #43A047, blue #1E88E5", relationTag("colour"), #808080));
Fora de eval(), as aspas são opcionais: o valor de um parâmetro é o texto até ;, então icon-image: tree.svg; e icon-image: "tree.svg"; são equivalentes. Espaços no início e no fim de um valor são descartados, mesmo entre aspas. @import funciona da mesma forma.
Em filtros de tags, coloque entre aspas um valor que contenha um apóstrofo, uma aspa ou ], ou que comece ou termine com espaço: [name="McDonald's"], [ref^="B "]. Nomes de tags em filtros e valores em condições @if nunca levam aspas.
Mesmo entre aspas, um valor não pode conter ;, { ou }, que encerram o parâmetro ou abrem um bloco, //, que inicia um comentário, nem @, que inicia uma macro.
A próxima versão do Guru Maps remove esses limites. Uma barra invertida vai escapar uma aspa (\", \', \\), ;, {, }, // e @ vão virar caracteres comuns dentro de aspas, e um valor entre aspas vai manter seus espaços.
Números e interruptores
text-priority, icon-scale, icon-offset-x, icon-offset-y e z-index aceitam um número simples, não uma expressão. Interruptores como text-allow-overlap aceitam true ou false.
Ordem de desenho
layer
O número da camada separa as diferentes camadas de renderização do mapa:
// Define a propriedade layer com o valor da etiqueta homônima
*|z9-[layer] {
layer: eval(tag("layer"));
}
z-index
Define a ordem de desenho de objetos do mesmo tipo em uma camada:
area|z10-[natural=wood] {
z-index: -3;
fill-color: @color_wood;
}
area[natural=oceanwater] {
z-index: -2;
fill-color: @color_water;
}
Parâmetros de polígonos
fill-color
Cor de preenchimento:
area|z5-[natural=water] {
fill-color: @color_water;
}
fill-image
Imagem de preenchimento:
// Preenche uma área militar acima dos outros objetos
area|z11- {
[landuse=military],
[military=danger_area] {
z-index: 2;
fill-image:"forbiddenArea.png";
}
}
fill-image aceita imagens inline em base64:
// Equivale a arrow.svg
fill-image: eval(data("PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI2IDNoMTBWMWw1IDMtNSAzVjVIMjZ6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG9wYWNpdHk9Ii40Ii8+PC9zdmc+Cg=="));
color e width para polígonos
Cor e largura da borda:
area|z15-[building] {
z-index: 3;
width: 1px;
color: @color_landuse_residential_stroke;
}
Parâmetros de linhas
color e width para linhas
line|z13-[natural=tree_row] {
width: 3pt;
color: @color_wood;
z-index: -10;
}
casing-color e casing-width
Definem a cor e a largura do contorno, usados principalmente em vias. O contorno é adicionado em cada lado da linha, por isso width também é necessário:
line|z8-[highway=motorway],
line|z11-[highway=motorway_link] {
color: @color_motorway;
casing-color: @color_motorway_casing;
casing-width: 0.5pt;
}
dashes
Define o comprimento dos segmentos desenhados e vazios, alternadamente. Use até 8 números com soma menor que 64. Cada número é o comprimento de um segmento da linha, em pontos.
line|z15-[highway=cycleway] {
dashes: 2,2,2,2;
dashes-color: @color_cycleway_dashes;
}
dashes-color e dashes-width
Cor e largura dos traços usados em trilhas, caminhos, escadas e limites. Os traços só são desenhados quando dashes, dashes-color e dashes-width estão todos definidos:
line|z15-[highway=steps] {
dashes-color: @color_footway_dashes;
dashes-width: eval( zlinear( 16, 3pt, 4pt ) );
}
linecap
Formato das extremidades: none, square ou round.
linejoin
Formato das junções: round ou bevel.
outline-color e outline-width
Uma segunda linha desenhada ao longo de uma linha ou da borda de um polígono, por exemplo uma faixa translúcida sob uma rota. Ao contrário do contorno (casing), outline não depende de width: outline-width é a sua largura total.
Um outline translúcido marca uma rota de trilha com uma faixa larga, e o caminho continua visível através dela:
relation[type=route][route=hiking] {
line|z13- {
outline-width: 7pt;
outline-color: #1E88E570; // azul translúcido
}
}
offset
Desloca a linha para o lado: valores positivos para a esquerda do sentido do trecho e negativos para a direita. O deslocamento vale para a linha, o contorno, o outline e os traços. Costuma ser usado com per-relation, para desenhar várias rotas lado a lado em um mesmo trecho; veja o exemplo abaixo.
per-relation
per-relation: true desenha um trecho uma vez para cada relação a que ele pertence, com os parâmetros dessa relação. Junto com offset e a função relationSlot, desenha lado a lado rotas que compartilham um trecho:
relation[type=route][route=subway] {
line|z11- {
per-relation: true;
width: 2pt;
offset: eval(relationSlot() * 2pt);
color: eval(mapColor("red #E53935, green #43A047, blue #1E88E5", relationTag("colour"), #808080));
}
}
Parâmetros de texto
text
Texto desenhado ao lado de um ponto ou no centro de uma linha ou polígono:
node,area|z2-8[place=country] {
text: eval(locTag("name"));
// Outros parâmetros omitidos
}
font-weight
Peso da fonte. Valores possíveis: lighter, light, normal, medium, semibold, bold, bolder.
node,area|z9-[place=town],
node,area|z10-[place=village],
node,area|z12-[place=hamlet] {
font-weight:light;
font-size:11;
font-stroke-width:2px;
font-stroke-color: @color_label_stroke;
}
font-style
normal ou italic. Para texto em negrito, use font-weight.
Nos mapas, é tradição escrever os nomes de corpos d'água em itálico, o que os distingue dos nomes de lugares:
line|z15-[waterway=river] {
text: eval(locTag("name"));
font-style: italic;
text-color: #0F4F80;
}
font-size
Tamanho da fonte, em pontos. O tamanho pode variar com o zoom; escreva números simples em zlinear e o texto cresce suavemente:
node|z10-[place=city] {
font-size: eval(zlinear(10, 13, 14, 15));
}
font-stroke-width e font-stroke-color
Largura e cor do contorno da fonte. A largura pode ser uma expressão.
text-color
Cor do texto:
node,area|z2-8[place=country] {
text: eval(locTag("name"));
text-color: @color_name_text;
text-priority: 10;
// Outras etiquetas omitidas
}
text-letter-spacing
Espaço extra entre as letras, em frações do tamanho da fonte: 0.1 acrescenta um décimo do tamanho da fonte. Pode variar com o zoom por meio de zlinear.
Letras maiúsculas espaçadas distinguem os nomes de regiões dos nomes de cidades. Conforme o mapa é ampliado, as letras se afastam e o nome ocupa mais da sua região:
node|z6-[place=state] {
text: eval(uppercase(locTag("name")));
text-letter-spacing: eval(zlinear(6, 0.1, 0.18, 0.25));
}
text-priority
Quando não há espaço para todas as etiquetas, define qual texto aparece primeiro.
text-allow-overlap
Permite que as etiquetas ocupem a mesma área.
text-big-padding
Reserva o dobro de espaço ao redor do texto. É útil para cidades e outros assentamentos importantes, evitando que as etiquetas encubram o mapa.
Parâmetros de ícones
icon-image
Nome da imagem exibida em um ponto ou no centro de um polígono:
node,area|z17-[amenity=library] {
icon-image: "library.svg";
icon-scale: 0.37;
icon-tint: @color_icon_tint;
}
icon-image aceita imagens inline em base64:
// Equivale a poi_circle_small.svg
icon-image: eval(data("PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwIDAgOCA4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNyA0QzcgNS42NTY4NSA1LjY1Njg1IDcgNCA3QzIuMzQzMTUgNyAxIDUuNjU2ODUgMSA0QzEgMi4zNDMxNSAyLjM0MzE1IDEgNCAxQzUuNjU2ODUgMSA3IDIuMzQzMTUgNyA0WiIgZmlsbD0iIzgwODA4MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggNEM4IDYuMjA5MTQgNi4yMDkxNCA4IDQgOEMxLjc5MDg2IDggMCA2LjIwOTE0IDAgNEMwIDEuNzkwODYgMS43OTA4NiAwIDQgMEM2LjIwOTE0IDAgOCAxLjc5MDg2IDggNFpNNCA3QzUuNjU2ODUgNyA3IDUuNjU2ODUgNyA0QzcgMi4zNDMxNSA1LjY1Njg1IDEgNCAxQzIuMzQzMTUgMSAxIDIuMzQzMTUgMSA0QzEgNS42NTY4NSAyLjM0MzE1IDcgNCA3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="));
icon-fallback
Uma imagem menor exibida no lugar de icon-image quando o ícone não tem espaço no mapa, por exemplo um ponto no lugar do logotipo de uma loja. Em uma rua movimentada, o lugar continua no mapa e o logotipo aparece quando você amplia:
node|z16-[brand:wikidata=Q38076] {
icon-image: "logo_mcdonalds.svg";
icon-fallback: "poi_circle_small.svg";
}
icon-scale
Aumenta ou reduz a imagem em relação ao tamanho original.
icon-tint
Recolore a imagem. #FFF permanece branco; #CCC recebe um tom mais claro; #888 corresponde à cor escolhida; #444 recebe um tom mais escuro; e #000 permanece preto. As cores intermediárias são combinadas suavemente.
icon-offset-x e icon-offset-y
Deslocam a imagem em relação ao ponto de ancoragem. Por padrão, ela fica centralizada. Por exemplo, icon-offset-y: 0; alinha a base de um alfinete ao ponto de destino. Os valores vão de 0 a 1: 0 representa a borda inferior ou esquerda e 1, a superior ou direita.
image-allow-overlap
Permite que os ícones se sobreponham.
Parâmetros de placas de rodovia
Uma placa mostra o número de uma via sobre uma chapa ao longo dela. É desenhada em linhas quando shield-image e shield-text estão definidos.
Placas nas cores das placas de sinalização de um país distinguem as vias principais das locais num relance. Na Belarus, por exemplo, os números das vias principais são brancos sobre vermelho, e os das vias locais são escuros sobre branco:
line|z11-[highway=primary][ref] {
shield-image: "shield.svg";
shield-text: eval(listItem(tag("ref"), 0)); // o primeiro número de "М1;E30"
shield-color: #005387;
[ref^=М], [ref^=Р] {
shield-color: #C1121C;
}
[ref^=Н] {
shield-image: "shield_plate.svg";
shield-color: #FEFEFE;
}
}
shield-image
A imagem da chapa.
shield-text
O texto da chapa, geralmente o número da via.
shield-color
Recolore a imagem da chapa como icon-tint.
shield-text-color
Cor do texto. Sem ela, o texto é escuro em chapas claras e branco em chapas escuras.
shield-fit
Como a chapa se ajusta ao texto. stretch (o padrão) estica o meio da imagem até a largura do texto e mantém as extremidades. fixed mantém a imagem como foi desenhada e só a alarga quando o texto não cabe; use-o em chapas com formato próprio, como as placas de rodovias dos EUA. Para manter as cores originais da imagem, defina shield-color: #00000000.
As rotas da Califórnia são numeradas num círculo quando têm dois dígitos e numa elipse quando têm três. O número vem depois do prefixo da rede, como em CA 1:
line|z12-[highway=secondary][ref^="CA "] {
shield-fit: fixed;
shield-text: eval(listItem(listItem(tag("ref"), 0), 1, " "));
shield-image: eval(cond(length(listItem(listItem(tag("ref"), 0), 1, " ")) == 3,
"shield_state_3.svg", "shield_state_2.svg"));
shield-color: #00000000;
shield-text-color: #1E1E1E;
}
Parâmetros dos detalhes
Use details-text e details-description para definir o nome e a descrição de objetos GeoJSON. O primeiro aparece como título e o segundo como descrição. Se ambos estiverem vazios, os toques no objeto serão ignorados. Esses parâmetros aceitam expressões.
* {
details-text: eval(tag("name"));
details-description: eval(tag("description"));
}
details-enabled: false faz com que os toques em um objeto não façam nada: o Guru Maps não abre os seus detalhes. Uma relação com esse parâmetro, como uma rota, também não aparece entre as rotas de um trecho tocado. Use-o em objetos que não têm nada a informar:
node|z15-[amenity=hunting_stand] {
icon-image: "poi_hunting_stand.svg";
details-enabled: false;
}
Expressões
Filtros e parâmetros podem depender de fatores externos, ser calculados por fórmulas ou variar com o zoom. Valores calculados sempre começam com eval().
Funções
Funções disponíveis:
min e max
Retornam o menor ou o maior valor. A quantidade de parâmetros não é limitada.
any
Retorna o primeiro valor que não seja null e aceita qualquer quantidade de argumentos.
data
Decodifica uma string base64 para uso com icon-image e fill-image.
tag
Retorna o valor da etiqueta indicada ou null se ela não existir.
locTag
Retorna o valor localizado de acordo com as preferências de idioma. Se a ordem for inglês, russo e idioma local, por exemplo, locTag("name") procura name:en, depois name:ru e por fim name, usando o primeiro valor disponível. O Guru Maps oferece suporte a ar, be, cs, da, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, sv, uk e zh. Use locTag() para esses idiomas e tag() diretamente para os demais.
relationTag
Retorna o valor de uma etiqueta da relação a que o objeto pertence, como a cor de uma rota: relationTag("colour"). Com per-relation, lê a relação que está sendo desenhada.
relationSlot
Com per-relation, retorna a posição da relação entre as rotas desenhadas no trecho, centrada em 0: -0.5 e 0.5 para duas rotas, -1, 0 e 1 para três. Multiplique-a pela largura da linha para posicionar as rotas lado a lado com offset, como no exemplo de per-relation.
listItem
Retorna um item de uma lista, contando a partir de 0. Os itens são separados por ; ou pelo caractere indicado no terceiro parâmetro.
shield-text: eval(listItem(tag("ref"), 0)); // "E 50" para "E 50;E 65"
color: eval(listItem(tag("osmc:symbol"), 0, ":")); // "red" para "red:white:red_bar"
length
Retorna o número de caracteres do texto, por exemplo para escolher uma chapa mais larga para um número de via com três dígitos, como no exemplo de shield-fit.
uppercase, lowercase e capitalize
Altera a caixa do texto. O segundo parâmetro, opcional, é um idioma cujas regras de caixa serão usadas, como em uppercase(locTag("name"), "el").
mapColor
Escolhe uma cor de uma paleta. O primeiro parâmetro é a paleta, "nome cor, nome cor, ..."; o segundo é o valor a procurar; o terceiro, opcional, é o resultado quando o valor está vazio. O nome de uma cor da paleta retorna essa cor; qualquer outra cor retorna a cor mais próxima da paleta.
color: eval(mapColor("red #E53935, green #43A047, blue #1E88E5", relationTag("colour"), #808080));
formatElevation
Formata uma altura em metros como 1234 m ou em pés, de acordo com as unidades escolhidas no aplicativo. Um pico é rotulado com o nome e a altura, ou só com a altura quando não tem nome:
node|z13-[natural=peak] {
text: eval(cond(locTag("name"),
cond(tag("ele"), locTag("name") . " " . formatElevation(tag("ele")), locTag("name")),
formatElevation(tag("ele"))));
}
cond
Avalia uma condição lógica. Se o primeiro argumento for verdadeiro, retorna o segundo; caso contrário, retorna o terceiro.
// Verifica addr:housenumber
text: eval( cond( tag("addr:housenumber"),
// Se houver número, concatena a próxima condição
tag("addr:housenumber") . cond( any( locTag("name"), tag("addr:housename") ),
// Se houver nome, coloca-o entre parênteses
" (" . any( locTag("name"), tag("addr:housename") ) . ")",
// Caso contrário, usa uma string vazia
""),
// Sem número, usa name ou addr:housename
any( locTag("name"), tag("addr:housename") ) ) );
boolean
Converte o valor em booleano. Se estiver ausente ou for igual a 0, No, Off ou False, sem diferenciar maiúsculas de minúsculas, retorna false; nos outros casos, retorna true.
zlinear
Altera um valor suavemente com o zoom. O primeiro parâmetro é o nível inicial; os demais são os valores de cada nível seguinte.
line|z13-[highway=residential] {
width: eval( zlinear( 13, 1px, 1pt, max(2pt, 4m) ) );
color: @color_small_road;
linecap: round;
}
Nesse exemplo, a via tem 1 pixel no zoom 13, 1 ponto no zoom 14 e o maior valor entre 2 pontos e 4 metros a partir do zoom 15.
metric
Converte um parâmetro numérico em metros.
line|z12-[highway=tertiary] {
width: eval( zlinear( 12, 1px, 1pt, 1pt, max(3pt, metric(any(tag("lanes"),2)*2)) ));
}
O número de faixas é multiplicado por 2 para obter a distância em metros. max(3pt, metric()) retorna o maior valor entre a largura em metros e em pontos.
Operadores de expressões
As expressões aceitam os operadores matemáticos +, -, * e /, o operador de concatenação de strings ., o operador de igualdade == e ~=, que verifica se o texto contém uma substring.