Przejdź do głównej zawartości

Styl mapy

Plik stylu MapCSS składa się z reguł stosowanych kolejno do każdego obiektu, od góry do dołu.

Przykładowy styl:

node[natural=tree] {
icon-image: "tree.svg";
}

wyświetli obraz tree.svg dla punktów, w których znacznik natural ma wartość tree.

Każda reguła stylu składa się z dwóch części: filtra node[natural=tree] oraz parametrów rysowania icon-image: tree.svg;. Filtr określa, do których obiektów zostaną zastosowane parametry.

Reguły można zagnieżdżać i ustawiać parametry na każdym poziomie.

|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";
}
}

Zagnieżdżone reguły pozwalają zachować zwięzłą i uporządkowaną strukturę stylu. Wspólne parametry można zdefiniować raz, bez powtarzania ich w wielu blokach.

Ta dokumentacja opisuje odmianę MapCSS używaną w aplikacji Guru Maps. Niektóre oryginalne parametry rysowania nie zostały zaimplementowane, ale dostępne są makra preprocesora, zagnieżdżone reguły i nowe funkcje obliczeniowe. Styl używany w Guru Maps znajduje się w repozytorium.

Filtry​

Przyjrzyjmy się złożonemu filtrowi:

node,area|z14-[boundary=forest_compartment][ref]

Składa się on z:

  1. Filtra typu node,area. Użyj node dla punktów, line dla linii, area dla wielokątów albo rozdziel kilka typów przecinkami. Użyj *, jeśli typ nie ma znaczenia. canvas wybiera tło mapy.
  2. Filtra powiększenia z14-. Określa poziomy powiększenia, na których reguła ma zadziałać. Można podać tylko minimalny poziom, np. z8-, tylko maksymalny, np. z-9, pojedynczy poziom, np. z12, albo zakres, np. z3-9. Oba końce zakresu są wliczone: z3-9 działa na poziomach powiększenia od 3 do 9.
  3. Filtrów znaczników [boundary=forest_compartment][ref]. Pozostawiają one wyłącznie obiekty ze znacznikiem boundary o wartości forest_compartment i dowolną wartością znacznika ref. Aby wybrać obiekty bez znacznika ref, użyj filtra [!ref].

Każda część jest opcjonalna. Filtr powiększenia może występować samodzielnie, jak |z16- w powyższym przykładzie.

Filtry znaczników​

FiltrPozostawia obiekty, w których
[ref]znacznik ref istnieje
[!ref]znacznika ref brakuje
[highway=primary]wartość jest równa primary
[highway!=primary]wartość nie jest równa primary
[population>100000]wartość jest większa; <, >= i <= działają tak samo
[ele%100]wartość jest wielokrotnością 100
[ref^=E]wartość zaczyna się od E
[name$=Street]wartość kończy się na Street
[name*=Park]wartość zawiera Park
[cuisine~=pizza]pizza jest jedną z wartości rozdzielonych znakiem ;, jak w pizza;burger

Porównania >, <, >= i <= porównują liczby, gdy obie wartości są liczbami, a w przeciwnym razie tekst.

Umieść wartość w cudzysłowie, gdy zawiera apostrof, cudzysłów lub ] albo gdy zaczyna się lub kończy spacją:

[name="McDonald's"],
[ref^="B "] {
icon-image: "logo.svg";
}

Wartość w cudzysłowie nie może zawierać {, }, ;, @ ani //.

Grupowanie filtrów​

Kilka filtrów można rozdzielić przecinkami:

node,area|z14-[boundary=forest_compartment][ref],
node,area|z14-[boundary=forestry_compartment][ref]

W tym przykładzie wspólne parametry można przenieść na wyższy poziom:

node,area|z14-[ref] {
[boundary=forest_compartment],
[boundary=forestry_compartment] {

}
}

Czasami trzeba połączyć kilka reguł w grupę. Umieść filtry w nawiasach ( i ), aby je zgrupować bez natychmiastowego rozpoczynania bloku reguły.

node,area|z14-[ref](
[boundary=forest_compartment],
[boundary=forestry_compartment]) {
}

Filtr powiększenia może dotyczyć całej grupy:

|z11-([highway=trunk], [highway=primary]) {
shield-image: "shield.svg";
}

Filtry relacji​

relation[...] pozostawia obiekty należące do relacji o podanych znacznikach. Na przykład odcinki dróg szlaków pieszych:

relation[type=route][route=hiking] {
line|z9- {
color: #0000ff80;
width: 2pt;
}
}

Funkcja relationTag odczytuje znaczniki tej relacji, a per-relation rysuje odcinek drogi osobno dla każdej z jego relacji.

Makra preprocesora​

Preprocesor przygotowuje styl do analizy, podstawiając wartości oraz włączając lub wyłączając bloki zależnie od ustawień.

Makra podstawiania​

@import​

Wstawia zawartość wskazanego pliku:

@import "polygons.mapcss";

@{name}​

Wstawia wartość makra w każdym miejscu jego użycia:

// Zdefiniuj kolor za pomocą
@color_ground: #EAE3D3;

// następnie użyj go jako
canvas
{
fill-color: @color_ground;
}

Makro wstawia swój tekst bez zmian, więc może zawierać część wyrażenia:

@route_band_width: zlinear(13, 5pt, 7pt, 9pt, 11pt);

line|z13- {
outline-width: eval(@route_band_width);
}

Makro, którego wartość zaczyna się od eval(, jest obliczane raz, podczas wczytywania stylu.

Warunki​

@if​

Sprawdza parametr i dołącza blok do stylu albo go pomija:

@if Theme == Dark
@import "colors_dark.mapcss";
@else // Kolory domyślne
@import "colors.mapcss";
@endif

Warunek może porównywać parametr za pomocą ==, !=, <, >, <= lub >=. Wartość to pojedyncze słowo złożone z liter, cyfr i _. Parametr bez porównania sprawdza, czy jest włączony; ! sprawdza, czy jest wyłączony:

@if Food
// pokazywane, gdy przełącznik Restauracje i kawiarnie jest włączony
@endif
@if !Food
// pokazywane, gdy jest wyłączony
@endif

Guru Maps używa następujących parametrów preprocesora:

  • Theme {Light, Dark} — bieżący motyw aplikacji. W ciemnym motywie czysta biel #FFFFFF w ikonach staje się ciemnoszara; użyj #FEFEFE dla bieli, która ma pozostać biała.
  • Style {City, Outdoor} — bieżący styl mapy,
  • SubStyle {Hike, Bike, Ski, Car}
    • Hike, Bike i Ski są ustawiane przez warianty mapy Outdoor do pieszych wędrówek, jazdy na rowerze i narciarstwa,
    • Car jest ustawiany podczas nawigacji samochodowej, przy dowolnym stylu mapy.
  • Przełączniki z ustawień Obiekty mapy: AllShops, Bar, Beauty, BuildingName, CityService, Culture, Education, Entertaiment, Financial, Food, Hotel, Medical, PistesAndLifts, Postal, PublicTransport, Railway, Shop, Sport. Przełącznik ma wartość 1, gdy jest włączony, i 0, gdy jest wyłączony. Podczas nawigacji samochodowej wszystkie przełączniki poza BuildingName są wyłączone.

@else​

Określa blok kodu wykonywany, gdy pierwszy warunek jest fałszywy.

@elif​

Zawiera warunek sprawdzany, jeśli wcześniejsze warunki nie zostały spełnione.

@endif​

Zamyka blok bieżącego warunku.

Komentarze​

// zamienia w komentarz resztę wiersza, a /* i */ obejmują komentarz złożony z kilku wierszy.

Parametry rysowania​

Te parametry określają sposób rysowania obiektów na mapie.

Wartości parametrów​

Szerokość​

Grubość linii, czyli width, można podać w pikselach 1px, punktach 2pt, metrach 3m albo obliczyć za pomocą wyrażenia, np. eval( zlinear( 13, 1px,1pt,max(2pt, 4m)) );. Więcej informacji znajduje się w sekcji o wyrażeniach. Zawsze podawaj jednostkę: liczba bez jednostki jest mierzona w wewnętrznych jednostkach mapy.

Kolor​

Kolor można zapisać jako #RGB, #RRGGBB, #RRGGBBAA albo podać jego nazwę z listy kolorów CSS.

fill-color, casing-color, dashes-color, text-color i font-stroke-color przyjmują wyłącznie kolor. color, icon-tint, outline-color, shield-color i shield-text-color przyjmują także wyrażenie.

Tekst i cudzysłowy​

Apostrofy i cudzysłowy znaczą to samo. Nie ma znaków ucieczki, więc tekst nie może zawierać znaku, w który jest ujęty: "McDonald's" zapisz w cudzysłowach, a 'say "hi"' w apostrofach. Przykłady na tej stronie używają cudzysłowów.

Wewnątrz eval() każdy tekst umieszczaj w cudzysłowach. Nazwa tagu złożona wyłącznie z łacińskich liter i cyfr działa bez nich, więc tag(name) to to samo co tag("name"), ale nazwa z : lub _ wymaga cudzysłowów: tag("addr:street"). Liczby z jednostkami, takie jak 2pt, oraz kolory, takie jak #808080, zapisuje się bez cudzysłowów. W tym przykładzie paleta to jeden tekst, relationTag("colour") odczytuje tag, a #808080 jest kolorem:

color: eval(mapColor("red #E53935, green #43A047, blue #1E88E5", relationTag("colour"), #808080));

Poza eval() cudzysłowy są opcjonalne: wartość parametru to tekst do ;, więc icon-image: tree.svg; i icon-image: "tree.svg"; są równoważne. Spacje na początku i na końcu wartości są pomijane, nawet w cudzysłowach. @import działa tak samo.

W filtrach tagów ujmij w cudzysłowy wartość, która zawiera apostrof, cudzysłów lub ] albo zaczyna się lub kończy spacją: [name="McDonald's"], [ref^="B "]. Nazwy tagów w filtrach i wartości w warunkach @if nigdy nie przyjmują cudzysłowów.

Nawet w cudzysłowach wartość nie może zawierać ;, { ani }, które kończą parametr lub otwierają blok, //, które zaczyna komentarz, ani @, które zaczyna makro.

Wkrótce

Następna wersja Guru Maps znosi te ograniczenia. Ukośnik wsteczny będzie poprzedzał cudzysłów, który ma być częścią tekstu (\", \', \\), znaki ;, {, }, // i @ staną się zwykłymi znakami wewnątrz cudzysłowu, a wartość w cudzysłowie zachowa swoje spacje.

Liczby i przełączniki​

text-priority, icon-scale, icon-offset-x, icon-offset-y i z-index przyjmują zwykłą liczbę, a nie wyrażenie. Przełączniki, takie jak text-allow-overlap, przyjmują true lub false.

Parametry kolejności rysowania​

layer​

Numer warstwy służy do rozdzielania różnych poziomów na mapie.

// dla każdego obiektu ze znacznikiem „layer” ustaw właściwość „layer” na wartość znacznika
*|z9-[layer] {
layer: eval(tag("layer"));
}

z-index​

z-index określa kolejność rysowania obiektów tego samego typu w obrębie warstwy.

area|z10-[natural=wood] {
z-index: -3;
fill-color: @color_wood;
}

area[natural=oceanwater] {
z-index: -2;
fill-color: @color_water;
}

Parametry wielokątów​

fill-color​

Kolor wypełnienia wielokąta.

area|z5-[natural=water] {
fill-color: @color_water;
}

fill-image​

Obraz wypełniający wielokąt.

// obraz wypełnienia obszaru wojskowego wyświetlanego nad innymi obiektami
area|z11- {
[landuse=military],
[military=danger_area] {
z-index: 2;
fill-image:"forbiddenArea.png";
}
}

fill-image obsługuje osadzony styl z danymi base64.

// tak samo jak arrow.svg
fill-image: eval(data("PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI2IDNoMTBWMWw1IDMtNSAzVjVIMjZ6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG9wYWNpdHk9Ii40Ii8+PC9zdmc+Cg=="));

color i width dla wielokąta​

Kolor i szerokość obrysu wielokąta.

area|z15-[building] {
z-index: 3;
width: 1px;
color: @color_landuse_residential_stroke;
}

Parametry linii​

color i width dla linii​

Kolor i szerokość linii.

line|z13-[natural=tree_row] {
width: 3pt;
color: @color_wood;
z-index: -10;
}

casing-color i casing-width​

Kolor i szerokość obwódki linii, używane głównie dla dróg. Obwódka jest dodawana po każdej stronie linii, więc wymaga także width.

line|z8-[highway=motorway],
line|z11-[highway=motorway_link] {
color: @color_motorway;
casing-color: @color_motorway_casing;
casing-width: 0.5pt;
}

dashes​

Określa kolejno długości rysowanych i pustych odcinków. Użyj do 8 liczb o sumie mniejszej niż 64. Każda liczba oznacza długość odcinka linii w punktach.

line|z15-[highway=cycleway] {
dashes: 2,2,2,2;
dashes-color: @color_cycleway_dashes;
}

dashes-color i dashes-width​

Kolor i szerokość kresek używanych dla szlaków, ścieżek, schodów i granic. Kreski są rysowane tylko wtedy, gdy ustawione są wszystkie trzy parametry: dashes, dashes-color i dashes-width.

line|z15-[highway=steps] {
dashes-color: @color_footway_dashes;
dashes-width: eval( zlinear( 16, 3pt, 4pt ) );
}

linecap​

Kształt zakończeń linii. Dostępne wartości: none, square, round.

linejoin​

Kształt połączeń linii. Dostępne wartości: round, bevel.

outline-color i outline-width​

Druga linia rysowana wzdłuż linii lub obrysu wielokąta, na przykład półprzezroczysty pas pod trasą. W odróżnieniu od obwódki, kontur nie zależy od width: outline-width to jego pełna szerokość.

Półprzezroczysty kontur oznacza szlak turystyczny szerokim pasem, a ścieżka pozostaje przez niego widoczna:

relation[type=route][route=hiking] {
line|z13- {
outline-width: 7pt;
outline-color: #1E88E570; // półprzezroczysty niebieski
}
}

offset​

Przesuwa linię na bok: wartości dodatnie w lewo względem kierunku drogi, ujemne w prawo. Przesunięcie dotyczy linii, jej obwódki, konturu i kresek. Najczęściej używa się go z per-relation, aby rysować obok siebie kilka tras na jednym odcinku drogi; zobacz przykład poniżej.

per-relation​

per-relation: true rysuje odcinek drogi osobno dla każdej relacji, do której należy, z parametrami tej relacji. Razem z offset i funkcją relationSlot pozwala rysować obok siebie trasy, które dzielą ten sam odcinek drogi:

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));
}
}

Parametry tekstu​

text​

Tekst rysowany obok punktu albo wyśrodkowany na linii lub wielokącie.

node,area|z2-8[place=country] {
text: eval(locTag("name"));
// pominięto pozostałe parametry
}

font-weight​

Grubość kroju pisma. Dostępne wartości: 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 lub italic. Dla pogrubionego tekstu użyj font-weight.

Na mapach nazwy wód tradycyjnie składa się kursywą, co odróżnia je od nazw miejscowości:

line|z15-[waterway=river] {
text: eval(locTag("name"));
font-style: italic;
text-color: #0F4F80;
}

font-size​

Rozmiar czcionki w punktach. Rozmiar może zmieniać się wraz z powiększeniem; podaj zwykłe liczby w zlinear, a tekst będzie rósł płynnie:

node|z10-[place=city] {
font-size: eval(zlinear(10, 13, 14, 15));
}

font-stroke-width i font-stroke-color​

Szerokość i kolor obrysu czcionki. Szerokość może być wyrażeniem.

text-color​

Kolor tekstu.

node,area|z2-8[place=country] {
text: eval(locTag("name"));
text-color: @color_name_text;
text-priority: 10;
// pominięto pozostałe znaczniki
}

text-letter-spacing​

Dodatkowy odstęp między literami, w ułamkach rozmiaru czcionki: 0.1 dodaje jedną dziesiątą rozmiaru czcionki. Może zmieniać się wraz z powiększeniem za pomocą zlinear.

Rozstrzelone wersaliki odróżniają nazwy regionów od nazw miast. Wraz z przybliżaniem mapy litery się rozsuwają, a nazwa obejmuje coraz większą część swojego regionu:

node|z6-[place=state] {
text: eval(uppercase(locTag("name")));
text-letter-spacing: eval(zlinear(6, 0.1, 0.18, 0.25));
}

text-priority​

Gdy etykiety konkurują o miejsce, text-priority określa, który tekst pojawi się jako pierwszy.

text-allow-overlap​

Pozwala etykietom nakładać się na siebie, dzięki czemu kilka tekstów może zajmować ten sam obszar.

text-big-padding​

Rezerwuje dwukrotnie większy odstęp wokół tekstu. Używaj tego parametru dla dużych miejscowości (miast, przedmieść itd.), aby etykiety nie zasłaniały mapy.

Parametry ikon​

icon-image​

Nazwa obrazu wyświetlanego w punkcie albo na środku wielokąta.

node,area|z17-[amenity=library] {
icon-image: "library.svg";
icon-scale: 0.37;
icon-tint: @color_icon_tint;
}

icon-image obsługuje osadzony styl z danymi base64.

// tak samo jak poi_circle_small.svg
icon-image: eval(data("PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwIDAgOCA4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNyA0QzcgNS42NTY4NSA1LjY1Njg1IDcgNCA3QzIuMzQzMTUgNyAxIDUuNjU2ODUgMSA0QzEgMi4zNDMxNSAyLjM0MzE1IDEgNCAxQzUuNjU2ODUgMSA3IDIuMzQzMTUgNyA0WiIgZmlsbD0iIzgwODA4MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggNEM4IDYuMjA5MTQgNi4yMDkxNCA4IDQgOEMxLjc5MDg2IDggMCA2LjIwOTE0IDAgNEMwIDEuNzkwODYgMS43OTA4NiAwIDQgMEM2LjIwOTE0IDAgOCAxLjc5MDg2IDggNFpNNCA3QzUuNjU2ODUgNyA3IDUuNjU2ODUgNyA0QzcgMi4zNDMxNSA1LjY1Njg1IDEgNCAxQzIuMzQzMTUgMSAxIDIuMzQzMTUgMSA0QzEgNS42NTY4NSAyLjM0MzE1IDcgNCA3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="));

icon-fallback​

Mniejszy obraz pokazywany zamiast icon-image, gdy ikona nie mieści się na mapie, na przykład kropka zamiast logo sklepu. Na ruchliwej ulicy miejsce pozostaje na mapie, a jego logo pojawia się po przybliżeniu:

node|z16-[brand:wikidata=Q38076] {
icon-image: "logo_mcdonalds.svg";
icon-fallback: "poi_circle_small.svg";
}

icon-scale​

Skaluje obraz tak, aby był większy lub mniejszy od oryginału.

icon-tint​

icon-tint zmienia kolor obrazu. #FFF pozostaje białe, #CCC przyjmuje jaśniejszy odcień wybranego koloru, #888 odpowiada kolorowi docelowemu, #444 staje się jego ciemniejszym odcieniem, a #000 pozostaje czarne. Między tymi punktami kolory przechodzą płynnie.

icon-offset-x i icon-offset-y​

Przesuwają obraz względem punktu zakotwiczenia. Domyślnie obraz jest wyśrodkowany na punkcie mapy. Na przykład icon-offset-y: 0; wyrównuje dolną krawędź ikony pinezki z punktem docelowym. Wartości mieszczą się w zakresie od 0 do 1, gdzie 0 oznacza dolną lub lewą krawędź, a 1 — górną lub prawą.

image-allow-overlap​

Pozwala ikonom nakładać się na siebie.

Parametry tablic drogowych​

Tablica pokazuje numer drogi na płytce wzdłuż drogi. Jest rysowana na liniach, gdy ustawione są zarówno shield-image, jak i shield-text.

Tablice w kolorach znaków drogowych danego kraju pozwalają od razu odróżnić drogi główne od lokalnych. Na Białorusi na przykład numery dróg głównych są białe na czerwonym tle, a lokalnych ciemne na białym:

line|z11-[highway=primary][ref] {
shield-image: "shield.svg";
shield-text: eval(listItem(tag("ref"), 0)); // pierwszy numer z "М1;E30"
shield-color: #005387;
[ref^=М], [ref^=Р] {
shield-color: #C1121C;
}
[ref^=Н] {
shield-image: "shield_plate.svg";
shield-color: #FEFEFE;
}
}

shield-image​

Obraz płytki.

shield-text​

Tekst na płytce, zwykle numer drogi.

shield-color​

Koloruje obraz płytki tak samo jak icon-tint.

shield-text-color​

Kolor tekstu. Bez niego tekst jest ciemny na jasnych płytkach i biały na ciemnych.

shield-fit​

Sposób dopasowania płytki do tekstu. stretch (domyślnie) rozciąga środek obrazu do szerokości tekstu i zachowuje jego końce. fixed zachowuje obraz w oryginalnej postaci i poszerza go tylko wtedy, gdy tekst się nie mieści; używaj go dla płytek o określonym kształcie, takich jak amerykańskie znaki drogowe. Aby zachować własne kolory obrazu, ustaw shield-color: #00000000.

Trasy w Kalifornii są numerowane w kółku przy dwóch cyfrach i w elipsie przy trzech. Numer następuje po prefiksie sieci, jak w 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;
}

Parametry szczegółów​

Użyj details-text i details-description, aby ustawić nazwę i opis obiektów GeoJSON. Wartość details-text jest wyświetlana jako tytuł, a details-description jako opis. Jeśli obie wartości są puste, dotknięcia obiektu są ignorowane. W tych parametrach można używać wyrażeń.

* {
details-text: eval(tag("name"));
details-description: eval(tag("description"));
}

details-enabled: false sprawia, że dotknięcia obiektu nic nie robią: Guru Maps nie otwiera jego szczegółów. Relacja z tym parametrem, na przykład trasa, również nie pojawia się wśród tras dotkniętego odcinka drogi. Używaj go dla obiektów, które nie mają nic do powiedzenia:

node|z15-[amenity=hunting_stand] {
icon-image: "poi_hunting_stand.svg";
details-enabled: false;
}

Wyrażenia​

Filtry i parametry rysowania mogą zależeć od czynników zewnętrznych, być obliczane za pomocą wzorów albo zmieniać się wraz z poziomem powiększenia.

Obliczane wartości muszą zawsze rozpoczynać się od funkcji eval().

Funkcje​

Wewnątrz można używać następujących funkcji:

min i max​

Zwracają najmniejszą albo największą wartość spośród parametrów. Liczba parametrów nie jest ograniczona.

any​

Zwraca pierwszą wartość parametrów różną od null. Można przekazać dowolną liczbę argumentów.

data​

Dekoduje ciąg base64. Może być używana przez icon-image i fill-image.

tag​

Zwraca wartość wskazanego znacznika albo null, jeśli znacznik nie istnieje.

locTag​

Zwraca zlokalizowaną wartość znacznika zgodnie z ustawieniami języka użytkownika. Jeśli preferowane języki to na przykład angielski, rosyjski i język ojczysty, locTag("name") sprawdza kolejno name:en, name:ru i name, a następnie używa pierwszej znalezionej wartości. Guru Maps obsługuje ar, be, cs, da, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, sv, uk, zh. Dla tych języków używaj locTag(), a dla pozostałych wywołuj bezpośrednio tag().

relationTag​

Zwraca wartość znacznika relacji, do której należy obiekt, na przykład kolor trasy: relationTag("colour"). Z per-relation odczytuje relację, która jest właśnie rysowana.

relationSlot​

Z per-relation zwraca pozycję relacji wśród tras rysowanych na odcinku drogi, wyśrodkowaną na 0: -0.5 i 0.5 dla dwóch tras, -1, 0 i 1 dla trzech. Pomnóż ją przez szerokość linii, aby za pomocą offset ułożyć trasy obok siebie, jak w przykładzie przy per-relation.

listItem​

Zwraca element listy, licząc od 0. Elementy są rozdzielone znakiem ; albo znakiem podanym w trzecim parametrze.

shield-text: eval(listItem(tag("ref"), 0)); // "E 50" for "E 50;E 65"
color: eval(listItem(tag("osmc:symbol"), 0, ":")); // "red" for "red:white:red_bar"

length​

Zwraca liczbę znaków tekstu, na przykład aby wybrać szerszą płytkę dla trzycyfrowego numeru drogi, jak w przykładzie przy shield-fit.

uppercase, lowercase i capitalize​

Zmieniają wielkość liter tekstu. Opcjonalny drugi parametr to język, według którego stosowane są reguły wielkości liter, na przykład uppercase(locTag("name"), "el").

mapColor​

Wybiera kolor z palety. Pierwszy parametr to paleta, "name color, name color, ..."; drugi to wartość do wyszukania; opcjonalny trzeci to wynik, gdy wartość jest pusta. Nazwa koloru z palety zwraca jej kolor; każdy inny kolor zwraca najbliższy kolor z palety.

color: eval(mapColor("red #E53935, green #43A047, blue #1E88E5", relationTag("colour"), #808080));

formatElevation​

Formatuje wysokość w metrach jako 1234 m lub w stopach, zgodnie z jednostkami wybranymi w aplikacji. Szczyt jest opisany nazwą i wysokością, a gdy nie ma nazwy, samą wysokością:

node|z13-[natural=peak] {
text: eval(cond(locTag("name"),
cond(tag("ele"), locTag("name") . " " . formatElevation(tag("ele")), locTag("name")),
formatElevation(tag("ele"))));
}

cond​

Oblicza wyrażenie logiczne. Jeśli pierwszy argument jest prawdziwy, funkcja zwraca drugi argument; w przeciwnym razie zwraca trzeci.

// sprawdź addr:housenumber
text: eval( cond( tag("addr:housenumber"),
// jeśli istnieje addr:housenumber, dołącz następny warunek
tag("addr:housenumber") . cond( any( locTag("name"), tag("addr:housename") ),
// jeśli istnieje name lub addr:housename, umieść wartość w nawiasach ()
" (" . any( locTag("name"), tag("addr:housename") ) . ")",
// w przeciwnym razie użyj pustego ciągu
""),
// jeśli nie ma housenumber, użyj dowolnej wartości z name lub addr:housename
any( locTag("name"), tag("addr:housename") ) ) );

boolean​

Konwertuje wartość na typ logiczny. Jeśli wartość nie istnieje albo jest równa 0, No, Off lub False (bez rozróżniania wielkości liter), funkcja zwraca false; w przeciwnym razie zwraca true.

zlinear​

Płynnie zmienia wartość wraz ze zmianą powiększenia. Pierwszy parametr to początkowy poziom powiększenia, a po nim podawane są wartości dla kolejnych poziomów.

line|z13-[highway=residential] {
width: eval( zlinear( 13, 1px, 1pt, max(2pt, 4m) ) );
color: @color_small_road;
linecap: round;
}

W tym przykładzie szerokość drogi wynosi 1 piksel na 13. poziomie powiększenia, 1 punkt na poziomie 14., a na poziomie 15. i wyższych — większą z wartości: 2 punkty lub 4 metry.

metric​

Przelicza parametr liczbowy na metry.

line|z12-[highway=tertiary] {
width: eval( zlinear( 12, 1px, 1pt, 1pt, max(3pt, metric(any(tag("lanes"),2)*2)) ));
}

W tym przykładzie liczba pasów jest mnożona przez 2, co daje odległość w metrach. max(3pt, metric()) zwraca większą wartość: szerokość w metrach albo szerokość w punktach.

Operatory wyrażeń​

Wyrażenia obsługują operatory matematyczne +, -, *, /, operator łączenia ciągów ., operator równości == oraz ~=, który sprawdza, czy tekst zawiera podciąg.