Перайсці да асноўнага змесціва

Стыль карты

Файл стылю MapCSS складаецца з правілаў, якія паслядоўна зверху ўніз прымяняюцца да кожнага аб'екта.

Напрыклад, стыль:

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

пакажа выяву tree.svg для кропак, у якіх тэг natural мае значэнне tree.

Кожнае правіла мае дзве часткі: фільтр node[natural=tree] і параметры малявання icon-image: tree.svg;. Фільтр вызначае, да якіх аб'ектаў прымяняюцца параметры.

Правілы можна ўкладаць адно ў адно і задаваць параметры на кожным узроўні:

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

Укладзеныя правілы робяць стыль карацейшым і больш структураваным: агульныя параметры задаюцца адзін раз, а не паўтараюцца ў кожным блоку.

Гэта дакументацыя апісвае дыялект MapCSS, які выкарыстоўвае Guru Maps. Некаторыя параметры малявання з арыгінальнага MapCSS не рэалізаваны, затое даступныя макрасы перадпрацэсара, укладзеныя правілы і дадатковыя функцыі для вылічэнняў. Стыль Guru Maps знаходзіцца ў рэпазіторыі.

Фільтры​

Разгледзім складаны фільтр:

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

Ён складаецца з трох частак:

  1. Фільтр тыпу node,area. node пазначае кропкі, line — лініі, area — палігоны. Некалькі тыпаў раздзяляюцца коскамі, а * азначае любы тып. canvas пазначае фон карты.
  2. Фільтр маштабу z14-. Ён задае ўзроўні, на якіх дзейнічае правіла. Можна пазначыць толькі мінімальны ўзровень, напрыклад z8-, толькі максімальны z-9, адзін узровень z12 або дыяпазон z3-9. Абодва канцы дыяпазону ўключаюцца: z3-9 дзейнічае на ўзроўнях ад 3 да 9.
  3. Фільтры тэгаў [boundary=forest_compartment][ref]. Застаюцца толькі аб'екты, дзе boundary роўны forest_compartment, а ref мае любое значэнне. Каб выбраць аб'екты без тэга ref, выкарыстоўвайце [!ref].

Кожная частка неабавязковая. Фільтр маштабу можа стаяць асобна, як |z16- у прыкладзе вышэй.

Фільтры тэгаў​

ФільтрВыбірае аб'екты, у якіх
[ref]тэг ref ёсць
[!ref]тэга ref няма
[highway=primary]значэнне роўнае primary
[highway!=primary]значэнне не роўнае primary
[population>100000]значэнне большае; <, >= і <= працуюць гэтак жа
[ele%100]значэнне кратнае 100
[ref^=E]значэнне пачынаецца з E
[name$=Street]значэнне заканчваецца на Street
[name*=Park]значэнне змяшчае Park
[cuisine~=pizza]pizza — адно са значэнняў, раздзеленых ;, як у pizza;burger

Параўнанні >, <, >= і <= параўноўваюць лікі, калі абодва значэнні — лікі, а ў астатніх выпадках — тэкст.

Бярыце значэнне ў двукоссі, калі яно змяшчае апостраф, двукоссе або ], а таксама калі яно пачынаецца або заканчваецца прабелам:

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

Значэнне ў двукоссях не можа змяшчаць {, }, ;, @ і //.

Групаванне фільтраў​

Некалькі фільтраў можна раздзяліць коскай:

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

Агульныя параметры ў гэтым прыкладзе можна вынесці на вышэйшы ўзровень:

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

}
}

Каб аб'яднаць некалькі фільтраў у групу без неадкладнага адкрыцця блока правіла, абгарніце іх круглымі дужкамі:

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

Фільтр маштабу можа дзейнічаць на ўсю групу:

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

Фільтры адносін​

relation[...] выбірае аб'екты, якія ўваходзяць у адносіну (relation) з зададзенымі тэгамі. Напрыклад, участкі пешаходных маршрутаў:

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

Функцыя relationTag чытае тэгі гэтай адносіны, а per-relation малюе ўчастак адзін раз для кожнай з яго адносін.

Макрасы перадпрацэсара​

Перадпрацэсар падстаўляе значэнні і ўключае або выключае блокі паводле налад перад разборкай стылю.

Макрасы падстаноўкі​

@import​

Устаўляе змесціва зададзенага файла:

@import "polygons.mapcss";

@\{name\}​

Устаўляе значэнне макраса ў месцы яго выкарыстання:

// Вызначаем колер
@color_ground: #EAE3D3;

// Потым выкарыстоўваем яго так
canvas
{
fill-color: @color_ground;
}

Макрас устаўляе свой тэкст без змен, таму ён можа змяшчаць частку выразу:

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

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

Макрас, значэнне якога пачынаецца з eval(, вылічваецца адзін раз, пры загрузцы стылю.

Умовы​

@if​

Правярае параметр і дадае або выключае блок са стылю:

@if Theme == Dark
@import "colors_dark.mapcss";
@else // Стандартныя колеры
@import "colors.mapcss";
@endif

Умова можа параўноўваць параметр праз ==, !=, <, >, <= або >=. Значэнне — адно слова з літар, лічбаў і _. Параметр без параўнання правярае, што ён уключаны; ! правярае, што ён выключаны:

@if Food
// паказваецца, калі пераключальнік «Рэстараны і кавярні» ўключаны
@endif
@if !Food
// паказваецца, калі ён выключаны
@endif

Guru Maps перадае перадпрацэсару наступныя параметры:

  • Theme {Light, Dark} — бягучая тэма праграмы. У цёмнай тэме чыста белы #FFFFFF у значках становіцца цёмна-шэрым; для белага, які павінен застацца белым, выкарыстоўвайце #FEFEFE;
  • Style {City, Outdoor} — бягучы стыль карты;
  • SubStyle {Hike, Bike, Ski, Car}:
    • Hike, Bike і Ski задаюцца варыянтамі карты Outdoor для паходаў, язды на веласіпедзе і катання на лыжах;
    • Car задаецца падчас навігацыі на аўтамабілі з любым стылем карты;
  • пераключальнікі з раздзела Аб'екты на карце у наладах: AllShops, Bar, Beauty, BuildingName, CityService, Culture, Education, Entertaiment, Financial, Food, Hotel, Medical, PistesAndLifts, Postal, PublicTransport, Railway, Shop, Sport. Пераключальнік роўны 1, калі ўключаны, і 0, калі выключаны. Падчас навігацыі на аўтамабілі ўсе пераключальнікі, акрамя BuildingName, выключаны.

@else​

Задае блок кода, які выконваецца, калі першая ўмова непраўдзівая.

@elif​

Змяшчае наступную ўмову, якая правяраецца, калі папярэднія не спрацавалі.

@endif​

Закрывае бягучы ўмоўны блок.

Каментарыі​

// робіць каментарыем астатак радка, а /* і */ абмежоўваюць каментарый з некалькіх радкоў.

Параметры малявання​

Гэтыя параметры вызначаюць, як аб'екты выглядаюць на карце.

Значэнні параметраў​

Шырыня​

Таўшчыню лініі width можна задаць у пікселях 1px, пунктах 2pt, метрах 3m або вылічыць выразам, напрыклад eval( zlinear( 13, 1px,1pt,max(2pt, 4m)) );. Падрабязней глядзіце ў раздзеле пра выразы. Заўсёды пазначайце адзінку: лік без адзінкі вымяраецца ва ўнутраных адзінках карты.

Колер​

Колер задаецца як #RGB, #RRGGBB, #RRGGBBAA або назвай з пераліку колераў CSS.

fill-color, casing-color, dashes-color, text-color і font-stroke-color прымаюць толькі колер. color, icon-tint, outline-color, shield-color і shield-text-color прымаюць таксама выраз.

Тэкст і двукоссі​

Апострафы і двукоссі азначаюць адно і тое ж. Экранавання няма, таму тэкст не можа змяшчаць той знак, у які ён узяты: пішыце "McDonald's" у двукоссях і 'say "hi"' у апострафах. У прыкладах на гэтай старонцы выкарыстоўваюцца двукоссі.

Усярэдзіне eval() бярыце кожны тэкст у двукоссі. Назва тэга, якая складаецца толькі з лацінскіх літар і лічбаў, працуе і без іх, таму tag(name) — тое ж, што tag("name"), але назве з : або _ двукоссі патрэбныя: tag("addr:street"). Лікі з адзінкамі, напрыклад 2pt, і колеры, напрыклад #808080, пішуцца без двукоссяў. У гэтым прыкладзе палітра — гэта адзін тэкст, relationTag("colour") чытае тэг, а #808080 — колер:

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

Па-за eval() двукоссі неабавязковыя: значэнне параметра — гэта тэкст да ;, таму icon-image: tree.svg; і icon-image: "tree.svg"; — гэта адно і тое ж. Прабелы ў пачатку і ў канцы значэння адкідаюцца, нават у двукоссях. @import працуе гэтак жа.

У фільтрах па тэгах бярыце ў двукоссі значэнне, якое змяшчае апостраф, двукоссе або ], або пачынаецца ці заканчваецца прабелам: [name="McDonald's"], [ref^="B "]. Назвы тэгаў у фільтрах і значэнні ва ўмовах @if двукоссяў не прымаюць.

Нават у двукоссях значэнне не можа змяшчаць ;, { і }, якія завяршаюць параметр або адкрываюць блок, //, які пачынае каментарый, і @, які пачынае макрас.

Хутка

Наступная версія Guru Maps здымае гэтыя абмежаванні. Адваротная касая рыса будзе экранаваць двукоссе і апостраф (\", \', \\), ;, {, }, // і @ стануць звычайнымі сімваламі ўнутры двукоссяў, а значэнне ў двукоссях захавае свае прабелы.

Лікі і пераключальнікі​

text-priority, icon-scale, icon-offset-x, icon-offset-y і z-index прымаюць звычайны лік, а не выраз. Пераключальнікі, напрыклад text-allow-overlap, прымаюць true або false.

Параметры парадку малявання​

layer​

Нумар слоя раздзяляе розныя ўзроўні аб'ектаў на карце.

// Для кожнага аб'екта з тэгам 'layer' задаём уласцівасці 'layer' значэнне гэтага тэга
*|z9-[layer] {
layer: eval(tag("layer"));
}

z-index​

z-index задае парадак малявання аб'ектаў аднаго тыпу ў межах слоя.

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

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

Параметры палігонаў​

fill-color​

Колер запаўнення палігона.

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

fill-image​

Выява для запаўнення палігона.

// Відарыс запаўнення вайсковай зоны, які паказваецца паверх іншых аб'ектаў
area|z11- {
[landuse=military],
[military=danger_area] {
z-index: 2;
fill-image:"forbiddenArea.png";
}
}

fill-image падтрымлівае ўбудаваны стыль з данымі base64.

// Тое самае, што arrow.svg
fill-image: eval(data("PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI2IDNoMTBWMWw1IDMtNSAzVjVIMjZ6IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIG9wYWNpdHk9Ii40Ii8+PC9zdmc+Cg=="));

color і width для палігона​

Колер і шырыня мяжы палігона.

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

Параметры ліній​

color і width для лініі​

Колер і шырыня лініі.

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

casing-color і casing-width​

Колер і шырыня вонкавага контуру лініі, найчасцей дарогі. Контур дадаецца з кожнага боку лініі, таму патрэбна і width.

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

dashes​

Задае па чарзе даўжыні намаляваных і пустых адрэзкаў. Выкарыстоўвайце не болей за 8 лікаў з сумай менш за 64. Кожны лік — даўжыня адрэзка ў пунктах.

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

dashes-color і dashes-width​

Колер і шырыня штрыхоў для сцежак, дарожак, лесвіц і межаў. Штрыхі малююцца, толькі калі заданы ўсе тры параметры: dashes, dashes-color і dashes-width.

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

linecap​

Форма канцоў лініі. Магчымыя значэнні: none, square, round.

linejoin​

Форма злучэнняў лініі. Магчымыя значэнні: round, bevel.

outline-color і outline-width​

Другая лінія, якая малюецца ўздоўж лініі або мяжы палігона, напрыклад паўпразрыстая паласа пад маршрутам. У адрозненне ад контуру casing, outline не залежыць ад width: outline-width — яго поўная шырыня.

Паўпразрысты outline адзначае пешаходны маршрут шырокай паласой, і сцежка праз яе застаецца бачнай:

relation[type=route][route=hiking] {
line|z13- {
outline-width: 7pt;
outline-color: #1E88E570; // паўпразрысты сіні
}
}

offset​

Зрушвае лінію ўбок: дадатныя значэнні — улева ад напрамку шляху, адмоўныя — управа. Зрушваюцца лінія, яе контур casing, outline і штрыхі. Часцей за ўсё offset выкарыстоўваюць з per-relation, каб намаляваць на адным шляху некалькі маршрутаў побач; гл. прыклад ніжэй.

per-relation​

per-relation: true малюе ўчастак шляху адзін раз для кожнай адносіны, у якую ён уваходзіць, з параметрамі гэтай адносіны. Разам з offset і функцыяй relationSlot гэта малюе маршруты, што ідуць па адным шляху, побач:

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

Параметры тэксту​

text​

Тэкст каля кропкі або па цэнтры лініі ці палігона.

node,area|z2-8[place=country] {
text: eval(locTag("name"));
// Іншыя параметры прапушчаны
}

font-weight​

Таўшчыня шрыфту. Магчымыя значэнні: 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 або italic. Для тоўстага тэксту выкарыстоўвайце font-weight.

Назвы водных аб'ектаў на картах традыцыйна набіраюць курсівам, каб адрозніць іх ад назваў населеных пунктаў:

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

font-size​

Памер шрыфту ў пунктах. Памер можа змяняцца разам з маштабам; запісвайце ў zlinear звычайныя лікі, і тэкст будзе расці плаўна:

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

font-stroke-width і font-stroke-color​

Шырыня і колер абводкі шрыфту. Шырыня можа быць выразам.

text-color​

Колер тэксту.

node,area|z2-8[place=country] {
text: eval(locTag("name"));
text-color: @color_name_text;
text-priority: 10;
// Іншыя тэгі прапушчаны
}

text-letter-spacing​

Дадатковы прамежак паміж літарамі ў долях памеру шрыфту: 0.1 дадае дзясятую долю памеру шрыфту. Можа змяняцца разам з маштабам праз zlinear.

Разрэджаныя вялікія літары адрозніваюць назвы абласцей ад назваў гарадоў. Пры павелічэнні маштабу літары разыходзяцца, і назва займае большую частку сваёй вобласці:

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

text-priority​

Калі надпісам не хапае месца, text-priority вызначае, які з іх паказаць першым.

text-allow-overlap​

Дазваляе надпісам перакрывацца, каб некалькі тэкстаў займалі адну вобласць.

text-big-padding​

Пакідае вакол тэксту ўдвая больш вольнага месца. Выкарыстоўвайце для буйных населеных пунктаў — гарадоў, мястэчак, прыгарадаў і падобных аб'ектаў, — каб надпісы не перакрывалі карту.

Параметры значкоў​

icon-image​

Назва выявы, якая паказваецца ў кропцы або ў цэнтры палігона.

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

icon-image падтрымлівае ўбудаваны стыль з данымі base64.

// Тое самае, што poi_circle_small.svg
icon-image: eval(data("PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwIDAgOCA4IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNyA0QzcgNS42NTY4NSA1LjY1Njg1IDcgNCA3QzIuMzQzMTUgNyAxIDUuNjU2ODUgMSA0QzEgMi4zNDMxNSAyLjM0MzE1IDEgNCAxQzUuNjU2ODUgMSA3IDIuMzQzMTUgNyA0WiIgZmlsbD0iIzgwODA4MCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggNEM4IDYuMjA5MTQgNi4yMDkxNCA4IDQgOEMxLjc5MDg2IDggMCA2LjIwOTE0IDAgNEMwIDEuNzkwODYgMS43OTA4NiAwIDQgMEM2LjIwOTE0IDAgOCAxLjc5MDg2IDggNFpNNCA3QzUuNjU2ODUgNyA3IDUuNjU2ODUgNyA0QzcgMi4zNDMxNSA1LjY1Njg1IDEgNCAxQzIuMzQzMTUgMSAxIDIuMzQzMTUgMSA0QzEgNS42NTY4NSAyLjM0MzE1IDcgNCA3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg=="));

icon-fallback​

Меншая выява, якая паказваецца замест icon-image, калі для значка на карце няма месца, напрыклад кропка замест лагатыпа крамы. На шчыльнай вуліцы ўстанова ўсё роўна застаецца на карце, а яе лагатып з'яўляецца пры павелічэнні маштабу:

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

icon-scale​

Змяняе памер выявы адносна арыгінальнага.

icon-tint​

icon-tint перафарбоўвае выяву: #FFF застаецца белым, #CCC становіцца святлейшым адценнем зададзенага колеру, #888 супадае з ім, #444 становіцца цямнейшым, а #000 застаецца чорным. Паміж гэтымі пунктамі колеры змешваюцца плаўна.

icon-offset-x і icon-offset-y​

Зрушваюць выяву адносна пункта прывязкі. Стандартна цэнтр выявы супадае з пунктам на карце. Напрыклад, icon-offset-y: 0; сумяшчае ніз значка-шпількі з патрэбным пунктам. Значэнні ляжаць у межах ад 0 да 1: 0 азначае ніжні або левы край, 1 — верхні або правы.

image-allow-overlap​

Дазваляе значкам перакрывацца.

Параметры дарожных шчытоў​

Шчыт паказвае нумар дарогі на таблічцы ўздоўж дарогі. Ён малюецца на лініях, калі заданы і shield-image, і shield-text.

Шчыты ў колерах дарожных знакаў краіны дазваляюць адразу адрозніць галоўныя дарогі ад мясцовых. Напрыклад, у Беларусі нумары галоўных дарог белыя на чырвоным, а мясцовых — цёмныя на белым:

line|z11-[highway=primary][ref] {
shield-image: "shield.svg";
shield-text: eval(listItem(tag("ref"), 0)); // першы нумар з "М1;E30"
shield-color: #005387;
[ref^=М], [ref^=Р] {
shield-color: #C1121C;
}
[ref^=Н] {
shield-image: "shield_plate.svg";
shield-color: #FEFEFE;
}
}

shield-image​

Выява таблічкі.

shield-text​

Тэкст на таблічцы, звычайна нумар дарогі.

shield-color​

Перафарбоўвае выяву таблічкі гэтак жа, як icon-tint.

shield-text-color​

Колер тэксту. Без яго тэкст цёмны на светлых таблічках і белы на цёмных.

shield-fit​

Як таблічка падганяецца пад тэкст. stretch (па змаўчанні) расцягвае сярэдзіну выявы да шырыні тэксту і захоўвае яе канцы. fixed пакідае выяву такой, як яна намалявана, і пашырае яе, толькі калі тэкст не змяшчаецца; выкарыстоўвайце для таблічак з асаблівай формай, напрыклад для дарожных знакаў ЗША. Каб захаваць уласныя колеры выявы, задайце shield-color: #00000000.

Маршруты Каліфорніі нумаруюцца ў коле для двух лічбаў і ў эліпсе для трох. Нумар ідзе пасля прэфікса сеткі, напрыклад 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;
}

Параметры падрабязнасцяў​

details-text і details-description задаюць назву і апісанне аб'ектаў GeoJSON. Першы паказваецца як загаловак, другі — як апісанне. Калі абодва значэнні пустыя, націск на аб'ект ігнаруецца. У гэтых параметрах можна выкарыстоўваць выразы.

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

Пры details-enabled: false націск на аб'ект нічога не робіць: Guru Maps не адкрывае яго падрабязнасці. Адносіна з такім параметрам, напрыклад маршрут, таксама не з'яўляецца сярод маршрутаў шляху, па якім націснулі. Выкарыстоўвайце яго для аб'ектаў, пра якія няма чаго расказаць:

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

Выразы​

Фільтры і параметры малявання могуць залежаць ад знешніх фактараў, вылічвацца паводле формул або мяняцца разам з маштабам.

Вылічанае значэнне заўсёды павінна пачынацца з функцыі eval().

Функцыі​

Унутры даступныя наступныя функцыі.

min і max​

Вяртаюць найменшае або найбольшае значэнне сярод неабмежаванай колькасці параметраў.

any​

Вяртае першае значэнне, якое не роўнае null. Колькасць аргументаў не абмежавана.

data​

Дэкадуе радок base64. Можна выкарыстоўваць у icon-image і fill-image.

tag​

Вяртае значэнне зададзенага тэга або null, калі яго няма.

locTag​

Вяртае лакалізаванае значэнне тэга паводле моўных налад карыстальніка. Напрыклад, калі выбраны англійская, руская і мясцовая мова, locTag("name") паслядоўна правярае name:en, name:ru і name, а затым выкарыстоўвае першае знойдзенае значэнне. Guru Maps падтрымлівае ar, be, cs, da, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, sv, uk, zh. Для гэтых моў выкарыстоўвайце locTag(), для астатніх — яўны выклік tag().

relationTag​

Вяртае значэнне тэга адносіны, у якую ўваходзіць аб'ект, напрыклад колер маршруту: relationTag("colour"). З per-relation чытае адносіну, якая малюецца.

relationSlot​

З per-relation вяртае пазіцыю адносіны сярод маршрутаў, намаляваных на шляху, з цэнтрам у 0: -0.5 і 0.5 для двух маршрутаў, -1, 0 і 1 для трох. Памножце яго на шырыню лініі, каб праз offset размясціць маршруты побач, як у прыкладзе да per-relation.

listItem​

Вяртае элемент спісу, пачынаючы лік з 0. Элементы раздзяляюцца знакам ; або сімвалам з трэцяга параметра.

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

length​

Вяртае колькасць сімвалаў у тэксце, напрыклад каб выбраць шырэйшы шчыт для трохзначнага нумара дарогі, як у прыкладзе да shield-fit.

uppercase, lowercase і capitalize​

Мяняюць рэгістр тэксту. Неабавязковы другі параметр — мова, паводле правіл якой мяняецца рэгістр, напрыклад uppercase(locTag("name"), "el").

mapColor​

Выбірае колер з палітры. Першы параметр — палітра "name color, name color, ..."; другі — значэнне для пошуку; неабавязковы трэці — вынік, калі значэнне пустое. Назва колеру з палітры вяртае яго колер; любы іншы колер вяртае найбліжэйшы колер палітры.

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

formatElevation​

Фарматуе вышыню ў метрах як 1234 m або ў футах паводле адзінак, абраных у праграме. Вяршыня падпісваецца назвай і вышынёй, а калі назвы няма — толькі вышынёй:

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

cond​

Вылічвае лагічны выраз. Калі першы аргумент праўдзівы, вяртае другі, інакш — трэці.

// Правяраем addr:housenumber
text: eval( cond( tag("addr:housenumber"),
// Калі ёсць addr:housenumber, дадаём вынік наступнай умовы
tag("addr:housenumber") . cond( any( locTag("name"), tag("addr:housename") ),
// Калі ёсць name або addr:housename, дадаём яго ў дужках
" (" . any( locTag("name"), tag("addr:housename") ) . ")",
// Інакш выкарыстоўваем пусты радок
""),
// Калі housenumber няма, выкарыстоўваем name або addr:housename
any( locTag("name"), tag("addr:housename") ) ) );

boolean​

Пераўтварае значэнне ў лагічнае. Калі значэння няма або яно роўнае 0, No, Off ці False без уліку рэгістра, функцыя вяртае false; ва ўсіх іншых выпадках — true.

zlinear​

Плаўна змяняе значэнне разам з маштабам. Першы параметр — пачатковы ўзровень маштабу, далей ідуць значэнні для кожнага наступнага ўзроўню.

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

У гэтым прыкладзе шырыня дарогі роўная 1 пікселю на ўзроўні 13, 1 пункту на ўзроўні 14 і найбольшаму з 2 пунктаў або 4 метраў на ўзроўні 15 і вышэй.

metric​

Пераўтварае лікавы параметр у метры.

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

Колькасць палос у прыкладзе памнажаецца на 2, што дае адлегласць у метрах. max(3pt, metric()) вяртае большае з двух значэнняў: шырыню ў метрах або пунктах.

Аператары выразаў​

Выразы падтрымліваюць матэматычныя аператары +, -, *, /, аператар злучэння радкоў ., аператар роўнасці == і ~=, які правярае, што тэкст змяшчае падрадок.