Стыль карты
Файл стылю 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]
Ён складаецца з трох частак:
- Фільтр тыпу
node,area.nodeпазначае кропкі,line— лініі,area— палігоны. Некалькі тыпаў раздзяляюцца коскамі, а*азначае любы тып.canvasпазначае фон карты. - Фільтр маштабу
z14-. Ён задае ўзроўні, на якіх дзейнічае правіла. Можна пазначыць толькі мінімальны ўзровень, напрыкладz8-, толькі максімальныz-9, адзін узровеньz12або дыяпазонz3-9. Абодва канцы дыяпазону ўключаюцца:z3-9дзейнічае на ўзроўнях ад 3 да 9. - Фільтры тэгаў
[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()) вяртае большае з двух значэнняў: шырыню ў метрах або пунктах.
Аператары выразаў
Выразы падтрымліваюць матэматычныя аператары +, -, *, /, аператар злучэння радкоў ., аператар роўнасці == і ~=, які правярае, што тэкст змяшчае падрадок.