Lingvoj:
- English
- Esperanto
- français
- norsk bokmål
- Nederlands
- русский
- 简体中文
Enhavtabelo
MapCSS-Implementado
La implementado de JOSM de MapCSS estas uzata por la sekvaj trajtoj:
- Mapaj stiloj
- Validator reguloj, vidu MapCSS-etikedokontrolilo por la speciala parto nur por reguloj.
- Serĉa dialogo
Konsideru instali la MapCSS-Sintaksa Kolorigilo en VS Code por aldoni videblan kolorigon por MapCSS-pentrado kaj validatora sintakso.
Ĝenerala Strukturo
MapCSS-stilfolio havas regulojn de la formo
elektilo { prop: value; /* ... */ prop: value; /* kaj/aŭ */ set: class; set: .class; /* notu ke validatoraj reguloj ne uzas la dupunkton post set */ }
La algoritmo por trovi la stilojn por donita objekto estas jena:
- por ĉiu regulo: se la elektilo aplikeblas, agordu la propraĵojn el la { } bloko - analizu la finan liston de propraĵoj kaj generu stilojn el ĝi
MapCSS uzas la komentan formaton de CSS (/* ... */
). Notu ke kiam vi komentas grandajn partojn de MapCSS-dosiero, iuj konstruoj povas kaŭzi neatenditan finon de la komento, ekzemple:
/* *[highway][name =~ /^R(\.|:)? .*/] { /* la fino de la regula esprimo difinas la neatenditan finon de la komento */ throwWarning: tr("foo"); } */
Elektiloj
Elektiloj indikas la filtrajn esprimojn de MapCSS-regulo. La regulo estas aplikata nur al mapobjekto, se ĝiaj elektiloj kongruas kun la objekto.
Elektiloj en MapCSS estas malsamaj de la norma CSS por la reto. MapCSS nur subtenas subaron de la normaj CSS-elektiloj, sed etendas ilin per aldonaĵoj necesaj por OSM-datumoj.
Iuj bazaj ekzemploj:
/* aplikata al vojoj kun etikedo highway=residential */ way[highway=residential] { /* la stiloj */} /* aplikata al novaj, fermitaj vojoj sur tavolo 1, kondiĉe ke ili havas la etikedojn amenity=parking kaj access=customers, kaj kondiĉe * ke la zoma nivelo estas inter 11 kaj 14 */ way|z11-14[amenity=parking][access=customers]:closed:new::layer_1 {...} area[amenity=parking][access=customers], area[amenity=parking][!access] {...} relation[type=route][route=foot] > way::relation_underlay {..}
La malsamaj elementoj (tipo-, zomo- , kondiĉo elektilo, pseŭdoklasoj, tavolo-identigilo, grupiĝo kaj infana kombinatoro) estas klarigitaj sube.
Tipo-elektilo
Elektilo | Priskribo | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
* | Kongruas kun iu ajn objekto | ||||||||||||||||
| Kongruas kun la OSM-objektoj de la donita tipo. | ||||||||||||||||
| Kongruas kun iu ajn areo sendepende de tio, ĉu la areo-rando estas modelita nur per unu vojo aŭ per aro de vojoj kunigitaj per rilato. area[natural=beach] {...} /* ... egalas al ... */ way[natural=beach], relation[type=multipolygon][natural=beach] {...}
Notu ke | ||||||||||||||||
|
La meta { title: "Parking lanes"; /* titolo montrata en la menuo */ icon: "logo_16x16x8.png"; /* malgranda ikono montrata en la menuo apud la titolo */ version: "1.2"; /* la versio de la stilo */ description: "..."; /* unu aŭ du frazoj priskribantaj la stilon */ author: "..."; /* la aŭtoro(j) de la stilo */ link: "https://..."; /* URL al la retpaĝo de la stilo */ min-josm-version: 6789; /* la minimuma JOSM-versio, kie ĉi tiu stilo funkcias */ } | ||||||||||||||||
| Iuj stilaj informoj ne specifaj al nodoj, vojoj aŭ rilatoj. canvas { fill-color: #ffffea; /* la antaŭa background-color estas malrekomendita ekde r7110 */ default-points: false; default-lines: false; }
|
Infana Elektilo
Se nodo estas parto de vojo, ni diras, ke ĝi estas infano de ĉi tiu vojo. Simile, se nodo, vojo aŭ rilato estas membro de rilato, ni diras, ke ĝi estas infano de ĉi tiu rilato.
En MapCSS vi povas uzi infanan elektilon, kiu kongruas nur se ambaŭ la patro kaj la infana objekto kongruas.
Ekzemplo:
/* * nur kongruas por vojo, kiu estas infano de rilato kun etikedoj * type=route kaj route=foot */ relation[type=route][route=foot] > way {...}
Notoj:
- Zomo-elektilo kaj Tavolo-identigilo estas nur gravaj por la parto dekstre de la > signo.
- La funkcioj prop() kaj is_prop_set() estas nur subtenataj dekstre de la > signo.
- La funkcioj parent_tag kaj parent_tags (vidu sube) povas esti uzataj por aliri etikedojn de la patro(j).
- Por kongrueco kun la MapCSS 0.2-standardo,
relation[type=route][route=foot] way {/*...*/}
, sen la pli-granda-ol-signo>
estas subtenata ankaŭ. Tamen, neniu Ligila Elektilo povas esti specifita en ĉi tiu kazo.
Patra Elektilo
Krom infanaj elektiloj, JOSM subtenas la nocion de patra elektilo. Notu, ke patraj elektiloj estas JOSM-specifa etendaĵo de MapCSS, kiu ne ekzistas en aliaj MapCSS-implementoj.
Simile al infana elektilo, patra elektilo kongruas nur se ambaŭ la patro kaj la infana objekto kongruas. Kontraste al la infana elektilo, la karaktero < estas uzata.
Kontraste al la infana elektilo, la patra objekto estos "elektita". Alivorte, la propraĵoj en la {{{...}}}
-Deklara Bloko aplikiĝas al la objekto dekstre de la "<" signo.
Ekzemplo:
/* * kongruas por vojo kun etikedo highway, kiu havas almenaŭ unu nodon kun etikedo traffic_calming=* */ node[traffic_calming] < way[highway] {...}
Kondiĉa Elektilo
Elektiloj povas inkluzivi aron de kondiĉoj. Se iu el ĉi tiuj kondiĉoj taksas al malvera, la elektilo ne kongruas kaj la stila regulo ne estas aplikata.
Atributa kondiĉo specifas kondiĉon sur etikedo de OSM-objekto.
Operacilo | Priskribo | Ekzemplo |
---|---|---|
| Ekzakta kongruo de la valoro. | way[highway=residential] /* estas usklecodistinga, t.e. NE kongruas ekz. kun highway=Residential aŭ Highway=residential */ node[name="My name"] /* uzu citilojn, se la ŝlosilo aŭ valoro inkluzivas spacojn */ node["name:pl"="Królewiec"] /* uzu citilojn, se la ŝlosilo aŭ valoro inkluzivas specialajn signojn kiel dupunktoj aŭ unikodaj signoj */ |
| Valoro ne egalas | way[highway!=residential] node[name!="My name"] node["name:pl"!="Królewiec"] |
| Komparo por nombraj valoroj. | node[population >= 50000] /* loĝantaro pli granda ol aŭ egala al 50000 */ node[ele = 3000] /* alteco kun ekzakte 3000 metroj */ |
| Prefiksa kongruo | node[name ^= "myprefix"] /* valoro komenciĝas per 'myprefix' */ |
| Sufiksa kongruo | node[name $= "mypostfix"] /* valoro finiĝas per 'mypostfix' */ |
| Subĉena kongruo | node[name *= "my substring"] /* valoro enhavas la subĉenon 'my substring' */ |
| Lista membreco | *[vending~=stamps] /* la etikeda valoro por la etikedo 'vending' konsistas el listo de ;-apartigitaj valoroj */ /* kaj unu el ĉi tiuj valoroj estas 'stamps' */ |
| Regula esprimo kongruo | *[name=~/^My_pattern.*/] /* la valoro de la etikedo 'name' kongruas kun la regula esprimo '^My_pattern.*' */ /* Notu, ke regulaj esprimoj devas esti ĉirkaŭitaj per /.../ */
Uskleco-sentiva kongruo povas esti ebligita per la enigita flago-esprimo *[name =~ /^(?i)(parking)$/] /* kongruas kun parking, Parking, PARKING, PaRkInG,... */ *[name =~ /^(?U)(\p{Lower})+$/] /* nomo konsistas nur el minusklaj unikodaj signoj */ |
| negita Regula esprimo kongruo | *[surface!~/paved|unpaved/] |
elemento de Kongruas kiam objekto kongruas kun la dekstra(j) elektilo(j) enhavas almenaŭ unu elementon, kiu kongruas kun la maldekstra(j) elektilo(j). | *[amenity=parking] ∈ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); }
Trovas areojn kun | |
Subaro de aŭ Egala Al
Sinonimo por | *[amenity=parking] ⊆ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); } | |
Superaro de aŭ Egala Al Kongruas kiam objekto kongruas kun la dekstra(j) elektilo(j) kaj estas enhavata en unu aŭ pli da elementoj, kiuj kongruas kun la maldekstra(j) elektilo(j). | area[amenity=parking] ⊇ *[amenity=parking]
trovas nodojn aŭ areojn kun | |
Nek Subaro de nek Egala Al Kongruas kiam objekto kongruas kun la dekstra(j) elektilo(j) kaj ne enhavas iun ajn elementon, kiu kongruas kun la maldekstra(j) elektilo(j). | *[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes]
trovas areojn amenity=parking, kiuj havas lit=yes sed ne enhavas lampon. Ĉiam aldonu | |
Nek Superaro de nek Egala Al Kongruas kiam objekto kongruas kun la dekstra(j) elektilo(j) kaj ne estas enhavata en iu ajn areo, kiu kongruas kun la maldekstra(j) elektilo(j). | area[landuse=residential] ⊉ *[building]
trovas konstruaĵojn, kiuj ne estas ene de iu ajn landuse=residential areo. Notu, ke ĉi tiu operacilo verŝajne produktos falsajn pozitivojn, kiam vi havas | |
kruciĝo | area:closed:areaStyle ⧉ area:closed:areaStyle { throwOther: tr("Overlapping Areas"); }
prenas |
Ekde r6554, eblas prefiksi la "valoron" (t.e., esprimon post la operacilo) per *
por "malreferenci" ĝin (t.e., konsideri ĝin kiel alian ŝlosilon kaj akiri ĝian valoron). Tiel, [key1 = *key2]
aŭ [key1=*key2]
komparas la valoron de key1
kun la valoro de key2
, kaj [key =~ */pattern/]
konsideras la valoron de la ŝlosilo pattern
kiel regulan esprimon kaj kongruas ĝin kun la valoro de key
.
Krome, vi povas testi, ĉu etikedo estas ĉeesta aŭ ne:
Kondiĉo | Ekzemplo |
---|---|
Ĉeesto de etikedo | way[highway] /* kongruas kun iu ajn vojo kun etikedo 'highway' (estas usklecodistinga) */ way["name:fr"] /* uzu citilojn, se la etikednomo inkluzivas specialajn signojn (spacoj, dupunktoj, unikodaj signoj, ktp.) */ |
Manke de etikedo | way[!highway] /* kongruas kun iu ajn vojo, kiu ne havas etikedon 'highway' (estas usklecodistinga) */ way[!"name:fr"] /* uzu citilojn, se la etikednomo inkluzivas specialajn signojn (spacoj, dupunktoj, unikodaj signoj, ktp.) */ |
Ĉeesto de etikedo per Regula esprimo kongruo (ekde r6547) | way[/^addr:/] /* kongruas kun iu ajn `addr:*` ŝlosilo */ |
Manke de etikedo per Regula esprimo kongruo | way[!/^addr:/] /* kongruas kun iu ajn vojo, kiu ne havas etikedon 'addr:*' */ |
Vi povas testi, ĉu la valoro de etikedo estas logika vera valoro. La valoro estas taksata al vera, se ĝi estas aŭ "jes", "vera", aŭ "1". Ĉiuj aliaj valoroj estas taksataj al malvera.
Kondiĉo | Ekzemplo |
---|---|
Testado por vera valoro | way[oneway?] /* kongruas kun iu ajn vojo kun vera valoro en la etikedo 'oneway' */ |
Testado por malvera valoro (ekde r6513) | way[oneway?!] /* kongruas kun iu ajn vojo kun malvera valoro en la etikedo 'oneway' */ |
Teritoria Elektilo
Vi povas testi, ĉu objekto situas ene aŭ ekster specifa teritorio. JOSM havas internan datumbazon por ĉi tio. La teritoria dosiero povas esti elŝutita kaj malfermita en JOSM por esplori ĝin (ekrankopio antaŭrigardo). Ĝi enhavas limojn de ĉiuj landoj de la mondo. Pro performaj kialoj la limoj estas simpligitaj. Ili povas esti rafinitaj por specialaj kazoj laŭ peto. La teritorioj estas "etikeditaj" per siaj ISO_3166-1_alpha-2 kodoj. Usono, Kanado, Ĉinio, Barato kaj Aŭstralio havas aldonaĵajn limojn por siaj subdividoj. Vidu la sekvajn ekzemplojn pri kiel uzi la teritoriajn elektilojn. Teritoriaj elektiloj estas malpli utilaj en mapaj stiloj kaj povas esti tre resurso-pezaj tie. Tamen ili estas multe pli utilaj por mapcss-bazitaj validatoraj reguloj. Por elekti teritoriojn kun maldekstra-traflanko aŭ dekstra-traflanko, ekzistas pli simpla maniero, vidu Pseŭdoklasoj. Vidu #10387 por ĉefa implementado de ĉi tiu trajto.
/* kongruas kun iu ajn nodo situanta … */ node[inside("FR")] /* … ene de Francio (inkluzivas la transmarajn teritoriojn) */ node[inside("FX")] /* … ene de Metropola Francio (t.e. nur la ĉeftera parto kun ĝiaj proksimaj insuloj inkluzive de Korsiko) */ node[inside("EU")] /* … ene de la Eŭropa Unio */ node[inside("FR,DE")] /* … ene de Francio __AŬ__ ene de Germanio */ node[inside("US-FL")] /* … ene de la usona ŝtato Florido */ node[outside("FR")] /* … ekster Francio */ node[outside("FR,DE")] /* … ekster Francio __KAJ__ ekster Germanio */ node[inside("US")][outside("US-FL")] /* … ene de Usono krom la ŝtato Florido */
Ligila Elektilo
En infana elektilo, vi povas formuli kondiĉojn pri la ligo inter patra kaj infana objekto.
Se la patro estas rilato, vi povas formuli kondiĉojn por la rolo, kiun membro-objekto havas en ĉi tiu rilato.
relation[type=route] >[role="link"] way { /* kongruas kun iu ajn vojo, kiu estas membro de voja rilato kun rolo 'link' */ color: blue; }
Operacilo | Priskribo | Ekzemplo |
---|---|---|
|
Ekzakta kongruo de la rola nomo. La nomo | relation >[role=residential] way relation >[role="My name"] way /* uzu citilojn, se la rola valoro inkluzivas spacojn aŭ aliajn specialajn signojn */ |
La operaciloj !=
, ^=
, $=
, *=
kaj ~=
estas subtenataj ankaŭ. Bonvolu referenci al kondiĉa elektilo-operaciloj.
Nodoj en vojoj kaj membroj en rilatoj estas ordigitaj. Vi povas formuli kondiĉojn pri la pozicio de nodo en vojo aŭ membro-objekto en rilato. Pozitivaj nombroj kalkulas de la unua ĝis la lasta elemento, negativaj nombroj (ekde r8236) kalkulas de la lasta ĝis la unua elemento.
relation[type=route] >[index=1] way { /* kongruas kun la unua vojo, kiu estas membro de voja rilato */ color: blue; } way >[index=-1] node { /* kongruas kun la lasta nodo de vojo */ symbol-stroke-color: green; } way!:closed >[index=1] node!:connection, way!:closed >[index=-1] node!:connection { /* kongruas kun ĉiuj unuopaj finaj nodoj de vojo */ symbol-stroke-color: green; }
Zomo-elektilo
Vi povas ornami tipan elektilon per zomo-elektilo. La zomo-elektilo limigas la gamon de zomaj niveloj, ĉe kiuj la respektiva MapCSS-regulo estas aplikata.
Ekzemplo 1 | Ekzemplo 2 | Ekzemplo 3 | Priskribo |
---|---|---|---|
way|z12 {...} | node|z12 {...} | node|z12[...] {...} | Ĉe zoma nivelo 12 |
way|z13-15 {...} | node|z13-15 {...} | way|z13-15[...] {...} | De 13 ĝis 15 |
way|z16- {...} | node|z16- {...} | node|z16-[...] {...} | 16 kaj pli |
way|z-12 {...} | node|z-12 {...} | node|z-12[...] {...} | 12 kaj malpli |
way {...} | node{...} | way[...] {...} | iu ajn zoma nivelo |
La preciza difino de skala gamo por ĉiu zoma nivelo povas ŝanĝiĝi en la estonteco. Laŭ regulo de dikfingro vi povas atendi esti proksimume ĉe zoma nivelo n, kiam bildaro montras glitmapajn kahelojn de nivelo n.
Pseŭdoklasoj
Vidu Javadoc por la ĝisdatigita listo de pseŭdoklasoj subtenataj de JOSM-a MapCSS-implementado.
Klaso | Priskribo |
---|---|
:closed | vera por vojoj, kie la unua nodo estas la sama kiel la lasta kaj por iu ajn (tute elŝutita) multpoligona rilato |
:closed2 | sama kiel supre, sed ĉi tiu ignoras, ĉu multpoligono estas tute elŝutita (ekde r9099) |
:completely_downloaded | vera por rilato, kies membroj estas ĉiuj elŝutitaj (ekde r9099) |
:new | ĉiuj novaj objektoj |
:connection | vera por nodoj, kiuj estas uzataj de pli ol unu vojo |
:unconnected | vera por nodoj, kiuj ne estas uzataj de iu ajn vojo (ekde r6687) |
:tagged | Kion JOSM konsideras etikedita, t.e. objekto kun etikeda ŝlosilo alia ol la sekvaj: source* , source_ref , note , comment , converted_by , created_by , watch* , fixme , FIXME , description , attribution (versio r4008; en ĉi tiu listo, * estas globo)
|
:area-style | vera se la objekto havas arean stilon |
:righthandtraffic | vera se estas dekstra-traflanko ĉe la aktuala loko (ekde r7193); vidu maldekstra-dekstra-traflanko por ekrankopio de areoj |
:clockwise | Ĉu la vojo estas fermita kaj orientita laŭhorloĝe, aŭ nefermita kaj la 1a, 2a kaj lasta nodo estas en laŭhorloĝa ordo. |
:anticlockwise | Ĉu la vojo estas fermita kaj orientita kontraŭhorloĝe, aŭ nefermita kaj la 1a, 2a kaj lasta nodo estas en kontraŭhorloĝa ordo. |
:unclosed_multipolygon | vera por tute ŝutitaj nefermitaj multpoligonaj rilatoj (ekde r8252) |
:open_end | por elekti finajn nodojn de nefermitaj multpoligonaj rilatoj kun relation:unclosed_multipolygon >:open_end node (ekde r8252)
|
:in-downloaded-area | vera se objekto estas ene de fonta areo kaj malvera se en la strekita areo (ekde r8495). |
:selected | vera se objekto estas elektita en la redaktilo (ekde r9341). |
:highlighted | vera se la objekto estas emfazita |
:modified | ŝanĝitaj kaj novaj objektoj (ekde r7193). |
Vi povas ankaŭ nei pseŭdoklasojn. Ekz. !:new
por ĉiuj malnovaj objektoj.
Tavolo-Identigilo
Tavoloj povas esti uzataj por krei pli ol unu stilon por unuopa objekto. Jen ekzemplo:
way[highway=secondary] { width: 3; color: yellow; } way[highway=tertiary] { width: 2; color: orange; } way[access][access!=yes]::non_public_access_layer { width: +2; color:red; dashes: 2; object-z-index:-1.0; } way[bridge]::bridge_layer { width: +3; color:#000080; opacity:0.5; object-z-index:1.0; }
Ĉi tiu desegnas ĉiujn sekundarajn kaj terciarajn vojojn en flava kaj oranĝa respektive. Iu ajn vojo kun aliro-etikedo alia ol jes ricevos ekstran linian stilon sube (object-z-index:-1.0;
) la ĉefa linio. Se tiu parto de la strato hazarde estas ponto, ĝi ankaŭ ricevos duontravideblan bluan supermeton. La relativa larĝa valoro (width: +2;
) referencas al la larĝo sur la defaŭlta tavolo (2 aŭ 3 en ĉi tiu kazo).
La nomo por la tavolo povas esti iu ajn identigilo.
Se vi preterlasas la tavolon en la elektilo, ĉi tio estas la sama kiel uzi ::default
.
Plia ekzemplo:
node[amenity=parking] { icon-image: "presets/vehicle/parking/parking.svg"; /* montras la internan parkadan ikonon de JOSM en la defaŭlta tavolo */ text: ref; /* montras la valoron de la ŝlosilo ref kiel tekston en la defaŭlta tavolo */ } node[amenity=parking][fee=yes]::fee { icon-image: "presets/money/exchange.svg"; /* montras la internan interŝanĝan ikonon de JOSM en la paga tavolo */ icon-offset-x: 14; /* ŝovas la ikonon */ icon-offset-y: -12; /* ŝovas la ikonon */ text: charge; /* montras la valoron de la ŝlosilo charge kiel tekston en la paga tavolo */ text-offset-x: 16; /* ŝovas la tekston */ text-offset-y: 17; /* ŝovas la tekston */ }
La rezulto aspektas jene:
Krome, vi povas uzi la * tavolon por anstataŭigi kaj pravalorizi ĉiujn tavolojn.
Ĝi anstataŭigas ĉiujn ekzistantajn subpartojn, do
way::A { a; } way::B { b; } way::* { c; } /* anstataŭigas ĉiujn ekzistantajn subpartojn */
egalas al
way::A { a; } way::B { b; } way::A { c; } /* anstataŭigas a per c ĉiujn ekzistantajn subpartojn */ way::B { c; } /* anstataŭigas b per c ĉiujn ekzistantajn subpartojn */
Kaj ĝi pravalorizas novajn subpartojn. Alivorte:
way::* { a; } way::A { b; }
egalas al
way::A {} way::* { a; } way::A { b; }
kio siavice estas la sama kiel
way::A { a; } way::A { b; }
aŭ
way::A { a; b; }
Grupiĝo
Reguloj kun komuna deklara bloko povas esti grupigitaj en unu:
area[landuse=forest] { color: green; width: 2; } area[natural=wood] { color: green; width: 2; }
estas la sama kiel
area[landuse=forest], area[natural=wood] { color: green; width: 2; }
Klasoj
Vi povas asigni klasojn al kongruaj elementoj, kaj difini aliajn elektilojn uzante tiujn klasojn:
/* asigni klasojn */ elektilo { set klaso; /* aŭ ekvivalente */ set .klaso; } /* kongrui klasojn */ way.klaso, node[foo=bar].klaso { /* ... */ }
Ekzemplo por asigni/kongrui klason nomatan path
:
way[highway=footway] { set path; color: #FF6644; width: 2; } way[highway=path] { set path; color: brown; width: 2; } way.path { text:auto; text-color: green; text-position: line; text-offset: 5; }
Vi povas ankaŭ nei klasojn. Ekz. way!.path
por ĉiuj vojoj, kiuj ne estas parto de la klaso .path.
Klasoj kaj Tavolo kune
Se vi volas uzi tavolon kaj klasojn kune, bonvolu noti, ke vi devas identigi la klason per is_prop_set.
node[railway=signal] { set sgnl; } /* ĝi ne funkcias */ node.sgnl::layer_signal_icon { z-index: 1000; ... icon: icon/signal-icon.svg; ... } node.sgnl::layer_signal_text { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... ) /* uzu anstataŭe: is_prop_set("...", "default") */ node[is_prop_set("sgnl", "default")]::layer_signal_icon { z-index: 1000; ... icon: icon/signal-icon.svg; ... } node[is_prop_set("sgnl", "default")]::layer_signal_text { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... )
@supports Kondiĉa Procezo
@supports reguloj estas uzataj por preterlasi sekcion de la stilo sub certaj kondiĉoj. Kutime vi volas uzi trajton, kiu estas enkondukita en pli nova versio de JOSM, sed havi rezervan stilon por uzantoj de malnovaj JOSM-klientoj. Ĉi tiu trajto venis kun r8087. Ekzemplo:
@supports (min-josm-version: 9789) { way[highway] { width: 4; color: orange; } /* fancy new stuff */ /* ... */ } @supports (max-josm-version: 9788) { way[highway] { width: 4; color: blue; } /* fall back mode, using more simple features */ /* ... */ } @supports (icon-offset-x) { /* only if icon-offset-x property is supported */ node[amenity] { icon-offset-x: 5; } }
La sintakso proksime kongruas kun la oficiala css sintakso. La sekvaj kondiĉoj estas subtenataj:
Kondiĉo | Priskribo |
---|---|
(<mapcsskey>) |
Kontrolu, ĉu certa mapcss-ŝlosilo estas subtenata, ekz. |
(min-josm-version: <number>) |
Nur inkluzivi |
(max-josm-version: <number>) |
Nur inkluzivi |
(user-agent: <string>) |
Nur inkluzivi |
Kondiĉoj povas esti kombinitaj kun and
:
@supports (min-josm-version: 8087) and (max-josm-version: 8200) { /* nur por JOSM-versioj 8087 ĝis 8200 */ }
Aliaj logikaj operaciloj kiel or
kaj not
povas ankaŭ esti uzataj. Krampoj estas necesaj, se vi volas kombini malsamajn logikajn operacilojn:
@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) { /* por JOSM-versio 8087 ĝis 8200 kaj por la redaktilo nomata "myEditor" */ }
Ĉar @supports reguloj estas nur subtenataj en JOSM r8087 kaj poste, vi devus ankaŭ specifi ĉi tion kiel minimuman JOSM-version en la meta-elektilo:
meta { min-josm-version: "8087"; /* Ĉi tiu stilo uzas @supports regulojn */ /* ... */ }
Stilaj Agordoj
Stilaj agordoj estas uzataj por provizi al la uzanto agordojn por adapti mapan stilon. La uzanto povas uzi ilin en la MapPaint dialogo. La sekvaj type
de agordoj estas haveblaj:
boolean
(ekde r7450)double
(ekde r15731, vidu #10435)string
(ekde r15731, vidu #10435)color
(ekde r16843, vidu #10435)
Agordoj de tipo boolean
Krei agordon de tipo boolean
:
setting::highway_casing { type: boolean; label: tr("Draw highway casing"); default: true; }
Uzi agordon de tipo boolean
:
way[highway][setting("highway_casing")] { casing-width: 2; casing-color: white; }
Agordoj de tipo double
Krei agordon de tipo double
:
setting::place_font_size { type: double; label: tr("Set place name font size..."); default: 11; }
Uzi agordon de tipo double
:
node.place, way.place, area.place { font-size: setting("place_font_size"); }
Agordoj de tipo string
Krei agordon de tipo string
:
setting::textdisplay { type: string; label: tr("key used for displaying"); default: "name"; /* ekzemploj por uzo: alt_name, old_name, addr:housename, ref, operator, ... */ }
Uzi agordon de tipo string
:
way { text: tag(setting("textdisplay")); }
Agordoj de tipo color
Krei agordon de tipo color
. La default
koloro povas esti iu ajn koloro kiel komprenata sub Priskribo de propraĵaj valoroj:
setting::colordisplay { type: color; label: tr("key used for displaying"); default: colorDisplayCustomPref#FF00FF; }
Uzi agordon de tipo color
:
way { color: setting("colordisplay"); }
Grupiĝo de agordoj
Similaj agordoj povas esti grupigitaj kune per difini agordajn grupojn (ekde r15289):
settings::my_group { label: tr("my wonderful group"); icon: "my_beautiful_icon"; }
Etikedo estas deviga, ikono estas nedeviga.
Iam agorda grupo estas difinita, ĝi povas esti referencata de ĉiuj agordoj apartenantaj al ĝi:
setting::hide_icons { type: boolean; label: tr("Hide icons at low zoom"); default: true; group: "my_group"; }
Agordaj grupoj estas montrataj kiel submenuoj de la stila agorda menuo. Se almenaŭ du agordoj apartenas al grupo, speciala "Ŝalti ĉiujn agordojn" menuero permesas rapide ŝalti/malŝalti ĉiujn agordojn de ĉi tiu grupo samtempe. Uzada ekzemplo: MapWithAI (en).
Propraĵoj
Ĝeneralaj propraĵoj
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
z-index | Specifu la ordon, en kiu la objektoj estas desegnitaj: La objektoj kun pli alta z-index estas desegnitaj supre de objektoj kun pli malalta z-index | Nombro (povas esti negativa) | 0 |
major-z-index | Simila al z-index , sed ĝi havas pli altan prioritaton ol z-index . Do se unu objekto havas pli altan major-z-index ol la alia, ĝi estas desegnita supre. Se la major-z-index estas la sama, z-index decidas. | Nombro (povas esti negativa) | Dependas de stila elemento: area: 1, casing: 2, left-/right-casing: 2.1, line-pattern: 2.9, line: 3, point: 4, default-point: 4.1, line-text: 4.9, point-text: 5 |
object-z-index | Simila al z-index , sed havas pli malaltan prioritaton. Kontrolas la desegnan ordon por supermetitaj objektoj. Ekz. por du kruciĝantaj vojoj kun teksto: Uzu z-index aŭ major-z-index se vi unue volas desegni la du liniojn kaj poste la du surskribojn. Uzu object-z-index se unu el la vojoj devus esti tute supre de la alia. | Nombro (povas esti negativa) | 0 |
modifier | Pli bona kontrolo, ĉu defaŭlta linio / noda simbolo estas generita de JOSM. Ĉi tio okazas, kiam ne estas taŭga stilo (modifier=false ) trovita sur iu ajn tavolo. | false aŭ true | false por la defaŭlta tavolo kaj true por iu ajn alia tavolo
|
Notu, ke pro performaj kialoj la valoroj por la tri z-indeksoj estas limigitaj al 24 bitaj glitkomaj valoroj kun maks. 5 decimalaj ciferoj. Nuntempe la interna mapstila stilo uzas valorojn kun maks. 2 ciferoj antaŭ kaj post la dekuma apartigilo. Por eviti problemojn uzu valorojn de z-indeksoj inter -99.999 kaj +99.999. (Vidu ankaŭ #14485)
Ikonaj kaj simbolaj stiloj
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
icon-image | La ikono ĉe noda pozicio. Vidu ankaŭ Bildoj. | Bildo | - |
icon-opacity | Travidebleco de la ikona bildo | Travidebleco | 1.0 |
icon-width | Larĝo de la ikono. Se nur unu el la propraĵoj icon-width kaj icon-height estas donita, la bildo estos skalita proporcie. La ikono konservos la originan grandecon, se nek icon-width nek icon-height estas agordita. | Nombro | - |
icon-height | Alto de la ikono. (Vidu icon-width ) | Nombro | - |
icon-offset-x | Ŝovu la ikonon en horizontala direkto (pozitivaj valoroj dekstren) (ekde r8085) | Nombro | 0 |
icon-offset-y | Ŝovu la ikonon en vertikala direkto (pozitivaj valoroj malsupren) (ekde r8085) | Nombro | 0 |
icon-rotation | Rotaciu la ikonon laŭhorloĝe aŭ kontraŭhorloĝe (negativa valoro)(ekde r8260) | [rad] , [rad]rad , [deg]° , [deg]deg , [grad]grad , [turn]turn (difino) aŭ kardinala direkto (ekz. northeast aŭ sw ); aŭ way por rotacii la ikonon en la direkto de la patra vojo. Vidu ankaŭ la funkciojn degree_to_radians , cardinal_to_radians . Ekde versio 18678 funkcio parent_way_angle() estas alternativo al way: ekz. way > node[...]::layer_x { ... icon-rotation: parent_way_angle(); ... } | - |
icon-position | Difinu la pozicion de la ikono por areoj. Samkiel text-position (ekde r11730). | center , inside , line | center
|
symbol-shape | Montru simbolon ĉe la pozicio de la nodo | square , circle , triangle , pentagon , hexagon , heptagon , octagon , nonagon , decagon | - |
symbol-size | Grandeco de la simbolo | Nombro, povas esti relativa ("+4") | 10 |
symbol-stroke-width | kontura larĝo | Larĝo | 1.0 se symbol-stroke-color estas agordita
|
symbol-stroke-color | linia koloro | Koloro | #FFC800 se symbol-stroke-width estas agordita
|
symbol-stroke-opacity | linia travidebleco | Travidebleco | 1.0 |
symbol-fill-color | pleniga koloro por la formo | Koloro | blue , krom se aŭ symbol-stroke-width aŭ symbol-stroke-color estas agordita
|
symbol-fill-opacity | pleniga travidebleco | Travidebleco | 1.0 |
text-... , font-... | vidu ĝeneralajn Tekstajn & Tiparajn propraĵojn |
Ne fidu je la defaŭltaj valoroj por symbol-...
propraĵoj (krom por opacity
). Ili estas intencitaj por "rapida & malpura" stilaj folioj kaj devus esti agorditaj al eksplicita valoro.
Liniaj stiloj
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
width | Linia larĝo | Larĝo | - |
color | Linia koloro | Koloro | valoro de fill-color aŭ(se ne agordita) JOSM-a defaŭlta sennoma koloro ( #808080 )
|
opacity | Kiel travidebla la linio estas. | Travidebleco | 1.0 |
dashes | Tabelo de alternaj ŝaltitaj/malŝaltitaj longoj | listo de nombroj, ekz. > 15, 5 povas esti skribita kiel esprimo: > list(3, 4, 5, 6) aŭ la ŝlosilvorto none por malŝalti strekojn | - |
dashes-offset | ŝovu la strekan modelon per certa kvanto | Nombro (>= 0) | 0 |
dashes-background-color | La koloro uzata inter la strekoj (nedeviga) | Koloro | - |
dashes-background-opacity | Travidebleca valoro por la streka fono | Travidebleco | valoro de opacity
|
linecap | Formo ĉe la fino de la linio (vidu ĉi tie) | none , round , square | none
|
linejoin | Formo ĉe la liniaj anguloj | round , miter , bevel | round
|
miterlimit | Aplikebla por linejoin: miter . Agordas la maksimuman transpaŝon, kiam liniaj segmentoj renkontiĝas ĉe tre malgranda angulo | Nombro (>= 1.0) | 10.0 |
offset | Movu linion maldekstren aŭ dekstren (kiam rigardante en voja direkto). Ĉi tio povus esti uzata por desegni multajn liniojn por unu vojo aŭ marki la maldekstran kaj dekstran flankojn de vojo malsame. | Nombro (pozitiva valoro movas linion maldekstren, negativa dekstren) | 0 |
text-position | agordu al line , se teksto devus esti desegnita laŭ la linio | line , center | - |
text-... ,font-... | vidu ĝeneralajn Tekstajn & Tiparajn propraĵojn | ||
repeat-image | ripetata bildo laŭ linio (ekde r5801) | Bildo | - |
repeat-image-width | Larĝo de la bildo (nedeviga, vidu icon-width ) (ekde r5811) | Nombro | - |
repeat-image-height | Alto de la bildo (nedeviga) (ekde r5811) | Nombro | - |
repeat-image-align | Vicigo de la bildo. Supra-, malsupra rando aŭ la (horizontala) centra linio de la bildo estos laŭ la linio (ekde r5801) | top , center , bottom | center
|
repeat-image-offset | Deŝovo de la linio (ekde r5801) | Nombro | 0 |
repeat-image-spacing | Spaco inter ripetataj bildoj (ekde r5801) | Nombro | 0 |
repeat-image-phase | Komenca spaco ĉe la komenco de la linio (ekde r5812) | Nombro | 0 |
repeat-image-opacity | Travidebleco de la ripetata bildo (ekde r16700) | Nombro | 1.0 |
Ĉiuj ĉi tiuj propraĵoj (krom por text-...
kaj font-...
) ekzistas ankaŭ kun la casing-
prefikso. La kovraĵo estas dua sendependa linia elemento, kiu estas desegnita sub la normala linio kaj povas esti uzata por desegni maldikan kadron ĉirkaŭ la linio en alia koloro.
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
casing-width | Larĝo de la kadro ambaŭflanke de la ĉefa linio. En JOSM < 5214: Tuta larĝo de la kovraĵo | Larĝo (inversas al width se relativa larĝo estas specifita) | - |
casing-color | Kovraĵa koloro | Koloro | valoro de fill-color aŭ (se ne agordita) JOSM-a defaŭlta sennoma koloro ( #808080 )
|
casing-opacity | Kiel travidebla la kovraĵo estas. | Travidebleco | 1.0 |
casing- ... | ... | ... | ... |
Simile al casing-
, ekzistas ankaŭ la left-casing-
kaj right-casing-
prefikso. Ĝi desegnas aldonaĵajn liniojn maldekstren kaj dekstren de la ĉefa linio.
Areaj stiloj
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
fill-color | Koloro, per kiu plenigi la areon. Ĝis 11700, la alfa komponanto estis agordita al 50 por krei travideblecan efekton. | Koloro | - |
fill-image | Bilda modelo | Bildo | - |
fill-extent | Agordu ĉi tiun propraĵon, por desegni nur la konturon de la areo. La nombro specifas, kiom for plenigi de la rando de la areo al la centro. (Se ne agordita, la areo estos tute plenigita) (ekde r9008) | Nombro | - |
fill-extent-threshold | Agordu ĉi tiun propraĵon, por desegni plenan areon, kiam la donita procento de kovro estas atingita. Povas esti pli granda ol 100%, ĉar la kovrita areo estas taksata kiel perimetro * extent. | Nombro | - |
fill-opacity | Kiel travidebla la plenigo estas; aplikebla al ambaŭ koloro kaj bildo | Travidebleco | 0.2 (ekde r11700, 1.0 antaŭ tio) (povas esti ŝanĝita per la preferoj mappaint.fillalpha kaj mappaint.fill-image-alpha )
|
text-position | agordu al center , se teksto devus esti desegnita en la centro de la areo. Agordu al inside por meti la tekston tute ene de la areo. (ekde r11722) | line , center , inside | - |
text-... , font-... | vidu ĝeneralajn tekstajn & tiparajn propraĵojn |
Devigaj propraĵoj por krei Arean stilon: fill-color
aŭ fill-image
Tekstaj & Tiparaj propraĵoj
Ŝlosilo | Priskribo | Valora Formato | Defaŭlta Valoro |
---|---|---|---|
|
Kiel trovi la etikedan tekston. |
Ĉeno
Esprimoj
| - |
text-color | la teksta koloro | Koloro | white por linioj kaj nodoj,#c0c0c0 por areoj (JOSM " text " kaj "areatext "koloraj preferoj) |
text-opacity | kiel travidebla la teksto estas | Travidebleco | 1.0 |
text-offset-x | ŝovu la tekston horizontale, (ne subtenata por teksto laŭ linio) | Nombro | 0 |
text-offset-y (povas ankaŭ esti skribita kiel text-offset ) | ŝovu la tekston vertikale, pozitivaj valoroj ŝovas la tekston supren | Nombro | 0 |
text-halo-radius | grandeco de teksta fona kadro (por fari tekston videbla sur fono kun simila koloro) | Nombro | - |
text-halo-color | koloro de la teksta halo | Koloro | komplemento de la teksta koloro |
text-halo-opacity | travidebleco por la teksta halo | Travidebleco | 1.0 |
text-anchor-horizontal | horizontala teksta etikedado | left , center , right | right
|
text-anchor-vertical | vertikala teksta etikedado | above , top , center , bottom , below | bottom
|
text-rotation | Rotaciu la tekston laŭhorloĝe aŭ kontraŭhorloĝe (negativa valoro) (ekde r16253) | [rad] , [rad]rad , [deg]° , [deg]deg , [grad]grad , [turn]turn (difino) aŭ kardinala direkto (ekz. northeast aŭ sw ); aŭ way por rotacii la tekston en la direkto de la patra vojo. Vidu ankaŭ la funkciojn degree_to_radians , cardinal_to_radians . Ekde versio 18678 funkcio parent_way_angle() estas alternativo al way: ekz. way > node[...]::layer_x { ... text-rotation: parent_way_angle(); ... } (Notu, ke la direkto signifas, kie la supra rando de la teksto frontas. Tio signifas, ke kun la defaŭlta direkto de nordo la teksto fluas orienten (kun maldekstre-al-dekstre lingvo). Do se vi volas fluigi ĝin al ekz. sudo, vi devas agordi orienten.) | - |
text-position | vidu Areaj stiloj kaj Liniaj stiloj | ||
font-family | tipara familio | Ĉeno | "Droid Sans" (JOSM prefero " mappaint.font ")
|
font-size | tipara grandeco | Nombro | 8 (JOSM prefero " mappaint.fontsize ")
|
font-weight | grasa aŭ ne | bold , normal | normal
|
font-style | kursiva aŭ ne | italic , normal | normal
|
Uzant-difinitaj propraĵoj
- En Mapaj stiloj vi povas difini iun ajn propran propraĵon, ekz.:
crc: CRC32_checksum(tag(name))/429496.7296;
- En Validatoraj reguloj ili devas esti prefiksitaj per
-
, ekz.:-osmoseItemClassLevel: "1210/1/1";
Priskribo de propraĵaj valoroj
Larĝo
- 14.0 (iu ajn pozitiva nombro)
default
(uzu JOSM-an defaŭltan linian larĝon, kiu estas 2, sed povas esti agordita)thinnest
(desegnas la linion kiel eble plej maldika)- +3 (kun pluso antaŭe) aldonas la kvanton al la larĝo sur la defaŭlta tavolo. Ĉi tio aplikiĝas nur por stiloj, kiuj ne estas sur la defaŭlta tavolo, ekz. emfazoj. Alia maniero skribi ĉi tion estus
prop("width","default")+3
. Porcasing-width
, ĉi tio referencas al lawidth
valoro sur la sama tavolo.
Bildo
Vidu Help/Styles/Images.
Koloro
- nomita koloro kiel trovita en ĉi tiu listo
- html-stilo:
#RRGGBB
,#RGB
,#RRGGBBAA
rgb(/*r*/, /*g*/, /*b*/)
- rgb valoro kun argumentoj de 0.0 ĝis 1.0rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)
- rgb valoro kun alfahsb_color(/*hue*/, /*saturation*/, /*brightness*/)
- koloro el HSB kolorospaco- se la koloro estas prefiksita per nomo kaj #, ekz.
color: highway_track#6e541c;
ĝi aperos en la Kolorprefero kaj finaj uzantoj povas adapti la koloron tie mem
Travidebleco
- de 0.0 (travidebla) ĝis 1.0 (opaka)
Ĉeno
- iu ajn signoĉeno, en citiloj, ekz.
"images/fill.png"
. Se la ĉeno estas identigilo, citiloj estas nedevigaj. (Citilo kaj retroklina signo povas esti eskapitaj.)
Nombro
- entjero aŭ glitkomo (en simpla formo ekz. 0.3). Ĝenerale povas esti negativa, sed plejmultaj propraĵoj ne subtenas negativajn nombrojn
- havas specialan signifon, se vi metas "+" signon antaŭe (relativa larĝo)
Eval-esprimoj
Vidu Javadoc de Funkcioj por la ĝisdatigita listo de funkcioj subtenataj de JOSM-a MapCSS-implementado.
- +, -, *, /
- aritmetikaj operacioj
- ||, &&, !
- buleaj operacioj
- <, >, <=, >=, ==, !=
- komparaj operaciloj
- asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (ekde r17759), random, round, signum, sin, sinh, sqrt, tan, tanh
- la kutima signifo, detaloj
- cond(b, fst, snd)
- b ? fst : snd
- se (b) tiam fst alie snd
- list(a, b, ...)
-
krei liston de valoroj, ekz. por la
dashes
propraĵo - get(lst, n)
- akiri la n-an elementon de la listo lst (kalkulado komenciĝas je 0) [ekde r5699]
- split(sep, str)
- dividas ĉenon str ĉe okazoj de la apartigilo sep, redonas liston [ekde r5699]
- prop(p_name)
-
valoro de la propraĵo p_name de la aktuala tavolo, ekz. prop(
"width"
) - prop(p_name, layer_name)
- propraĵo de la tavolo layer_name
- is_prop_set(p_name)
- vera, se propraĵo p_name estas agordita por la aktuala tavolo
- is_prop_set(p_name, layer_name)
- vera, se propraĵo p_name estas agordita por la tavolo layer_name
- tag(key_name)
- akiri la valoron de la ŝlosilo key_name de la objekto en demando
- parent_tag(key_name)
- akiri la valoron de la ŝlosilo key_name de la patra objekto
- parent_tags(key_name)
- redonas ĉiujn patrajn valorojn por la ŝlosilo key_name kiel liston ordigitan laŭ natura ordo [ekde r8775]
- has_tag_key(key_name)
- vera, se la objekto havas etikedon kun la donita ŝlosilo
- rgb(r, g, b)
- krei koloran valoron (argumentoj de 0.0 ĝis 1.0)
- hsb_color(h, s, b)
- krei koloron el hue, saturation kaj brightness (argumentoj de 0.0 ĝis 1.0) [ekde r6899]
- red(clr), green(clr), blue(clr)
- akiri valoron de koloraj kanaloj en rgb koloromodelo
- alpha(clr)
- akiri la alfan valoron de la donita koloro [ekde r6749]
- length(str)
- longo de ĉeno
- count(lst)
- longo de listo, t.e., kalkulas ĝiajn elementojn [ekde r7162]
- length(lst)
- longo de listo ([ekde r5699] – malrekomendita ekde r7162
- any(obj1, obj2, ...)
- redonas la unuan objekton, kiu ne estas nula (antaŭe coalesce, [ekde r7164])
- concat(str1, str2, ...)
- kunmeti la ĉenojn al unu
- join(sep, str1, str2, ...)
- kunigi ĉenojn, kun sep kiel apartigilo [ekde r6737]
- join_list(sep, list_name)
- kunigas la elementojn de la listo list_name al unu ĉeno apartigita per la apartigilo sep [ekde r8775]
- upper(str)
- konverti ĉenon al majusklo [ekde r11756]
- lower(str)
- konverti ĉenon al minusklo [ekde r11756]
- title(str)
-
konverti ĉenon al titola kazo [ekde r17613] (
"i am FINE"
→"I Am Fine"
) - trim(str)
- forigi komencajn kaj finajn blankajn spacojn de ĉeno [ekde r11756]
- trim_list(list_name)
- forigi komencajn kaj finajn blankajn spacojn de listo de ĉenoj, forigos erojn, kiuj estas malplenaj poste [ekde r15591]
- JOSM_search("...")
- vera, se JOSM-serĉo aplikiĝas al la objekto
- tr(str, arg0, arg1, ...)
- traduki de la angla al la aktuala lingvo (nur por ĉenoj en la JOSM-uzantinterfaco) [ekde r6506]
- regexp_test(regexp, string)
- testi, ĉu string kongruas kun modelo regexp [ekde r5699]
- regexp_test(regexp, string, flags)
- testi, ĉu string kongruas kun modelo regexp; flags estas ĉeno, kiu povas enhavi "i" (uskleco-sentiva), "m" (multlinia) kaj "s" ("dot all") [ekde r5699]
- regexp_match(regexp, string)
- Provas kongrui string kun modelo regexp. Redonas liston de kaptaj grupoj en kazo de sukceso. La unua elemento (indekso 0) estas la kompleta kongruo (t.e. string). Pliaj elementoj respondas al la krampitaj partoj de la regula esprimo. [ekde r5701]
- regexp_match(regexp, string, flags)
- Provas kongrui string kun modelo regexp. Redonas liston de kaptaj grupoj en kazo de sukceso. La unua elemento (indekso 0) estas la kompleta kongruo (t.e. string). Pliaj elementoj respondas al la krampitaj partoj de la regula esprimo. Flags estas ĉeno, kiu povas enhavi "i" (uskleco-sentiva), "m" (multlinia) kaj "s" ("dot all") [ekde r5701]
- substring(str, idx)
- redoni la subĉenon de str, komencante ĉe indekso idx (0-indeksita) [ekde r6534]
- substring(str, start, end)
- redoni la subĉenon de str, komencante ĉe indekso start (inkluziva) ĝis end (ekskluziva) (0-indeksita) [ekde r6534], negativa fina indekso kalkulas de la ĉena fino [ekde r19259]
- replace(string, old, new)
- Anstataŭigi iun ajn okazon de la subĉeno old ene de la ĉeno string per la teksto new
- osm_id()
- redonas la OSM-idon de la aktuala objekto [ekde r5699]
- osm_user_name()
- redonas la OSM-uzantnomon, kiu lastatempe tuŝis la aktualan objekton [ekde r15246]
- osm_user_id()
- redonas la OSM-uzant-idon, kiu lastatempe tuŝis la aktualan objekton [ekde r15246]
- osm_version()
- redonas la OSM-version numeron de la aktuala objekto [ekde r15246]
- osm_changeset_id()
- redonas la idon de la ŝanĝaro, al kiu la aktuala objekto estis lastatempe alŝutita [ekde r15246]
- osm_timestamp()
- redonas la tempon de lasta modifo al la aktuala objekto, kiel tempindiko [ekde r15246]
- parent_osm_id()
- redonas la OSM-idon de la patra objekto (kongruita per infana elektilo) [ekde r13094]
- URL_encode(str)
- procento-kodigi ĉenon. Povas esti utila por datumaj URL-oj [ekde r6805]
- URL_decode(str)
- procento-malkodigi ĉenon. [ekde r11756]
- XML_encode(str)
-
eskapigi specialajn signojn en xml. Ekz.
<
iĝas<
, aliaj specialaj signoj:>
,"
,'
,&
,\n
,\t
kaj\r
[ekde r6809] - CRC32_checksum(str)
- kalkuli la CRC32 kontrolsumon de ĉeno (rezulto estas entjero de 0 ĝis 232-1) [ekde r6908]
- siunit_length(str)
- konverti longecajn unuojn al metroj (tolerema, ignorante blankajn spacojn) [ekde r19089]
- is_right_hand_traffic()
- Kontroli, ĉu estas maldekstra-traflanko aŭ dekstra-traflanko ĉe la aktuala loko. [ekde r7193]
- number_of_tags()
- redonas la nombron de etikedoj por la aktuala OSM-objekto [ekde r7237]
- print(o)
-
presi ĉenan reprezenton de
o
al la komandlinio (por sencimigo) [ekde r7237] - println(o)
-
presi ĉenan reprezenton de
o
al la komandlinio, sekvitan de nova linio (por sencimigo) [ekde r7237] - JOSM_pref(key, default)
-
Akiri valoron de la JOSM-advanced preferoj. Tiel vi povas oferti certajn opciojn al la uzanto kaj fari la stilon adaptebla. Ĝi funkcias kun ĉenoj, nombroj, koloroj kaj buleaj valoroj.
[Ĉi tiu funkcio ekzistas ekde versio r3856, sed kun iuj limigoj.JOSM_pref
ĉiam redonas ĉenon, sed en versio r7237 kaj antaŭe, la aŭtomata konverto de ĉeno al bulea kaj koloro ne funkciis. Vi povas uzi la sekvajn solvojn por buleaj valoroj kaj koloro en versio r7237 kaj antaŭe:cond(JOSM_pref("myprefkey", "true")="true", "X", "O")
kajhtml2color(JOSM_pref("mycolor", "#FF345611"))
. Ĉi tiuj eksplicitaj konvertoj ne plu estu necesaj en versio r7238 kaj poste. Aŭtomata konverto al nombro funkcias en iu ajn versio. Krome, en versio r16590, povas esti uzata por agordi kolorajn propraĵojn. Do* { set_color: JOSM_pref("pref", #000000); }
kreas koloran propraĵon nun.] - setting()
- por uzi stilan agordon [ekde r7450]
- degree_to_radians()
- redonas en gradoj donitan direkton en radianoj [ekde r8260]
- cardinal_to_radians()
- redonas kardinalan direkton en radianoj [ekde r8260]
- waylength()
- redonas la longon de la vojo en metroj [ekde r8253]
- areasize()
- redonas la areon de fermita vojo en kvadratmetroj [ekde r8253]
- at(lat,lon)
-
redonas veran, se la objekta centroido situas ĉe donitaj lat/lon koordinatoj, ekz. por kontroli nodojn ĉe "nula insulo"
node[at(0.0,0.0)]
[ekde r12514] - is_similar(str1, str2)
-
redonas veran, se la du ĉenoj estas similaj, sed ne identaj, t.e., havas Levenshtein-distancon de 1 aŭ 2. Ekzemplo:
way[highway][name][is_similar(tag(name), "Main Street")]
kontrolas stratojn kun ebla tajperaro en la nomo (ekz. Main Streeg). [ekde r14371] - gpx_distance()
- redonas la plej malaltan distancon inter la OSM-objekto kaj GPX-punkto [ekde r14802]
- count_roles()
- redonas la nombron de primitivoj en rilato kun la specifitaj roloj [ekde r15275]
- sort(str1, str2, str3, ...)
- ordigas tabelon de ĉenoj [ekde r15279]
- sort_list(list_name)
- ordigas liston de ĉenoj [ekde r15279]
- tag_regex(regex)
- redonas liston enhavantan la valorojn de ŝlosiloj, kiuj kongruas kun la regex [ekde r15317]
- to_boolean(str)
- redonas la ĉenan argumenton kiel bulean [ekde r16110]
- to_byte(str)
- redonas la ĉenan argumenton kiel bajton [ekde r16110]
- to_short(str)
- redonas la ĉenan argumenton kiel mallongan [ekde r16110]
- to_int(str)
- redonas la ĉenan argumenton kiel int [ekde r16110]
- to_long(str)
- redonas la ĉenan argumenton kiel longan [ekde r16110]
- to_float(str)
- redonas la ĉenan argumenton kiel flosantan [ekde r16110]
- to_double(str)
- redonas la ĉenan argumenton kiel duoblan [ekde r16110]
- uniq(str1, str2, str3, ...)
- redonas liston de ĉenoj, kiuj nur havas unikajn valorojn de tabelo de ĉenoj [ekde r15323]
- uniq_list(list_name)
- redonas liston de ĉenoj, kiuj nur havas unikajn valorojn de listo de ĉenoj [ekde r15323]
- parent_way_angle()
- redonas la angulon de la patra vojo kiel duoblan en rad [ekde r18664] (vidu: text-rotation aŭ icon-rotation)
- convert_primitive_to_string(PrimitiveId)
- redonas la primitivan idon kiel ĉenon [ekde r18829]
- convert_primitives_to_string(PrimitiveId, PrimitiveId, ...)
- redonas liston de primitivaj idoj konvertitaj al ĉenoj [ekde r18829]
- parent_osm_primitives(optional key, optional value)
- redonas liston de primitivaj idoj, kiuj kongruas kun la ŝlosilo kaj valoro (se ĉeestas) [ekde r18829]
Ekzemploj
- cirkla simbolo por domnumero kun grandeco dependanta de la nombro de ciferoj
node[addr:housenumber] { symbol-shape: circle; symbol-size: eval((min(length(tag("addr:housenumber")), 3) * 5) + 3); symbol-fill-color: #B0E0E6; text: "addr:housenumber"; text-anchor-horizontal: center; text-anchor-vertical: center; text-offset-x: -1; text-offset-y: -1; } node[addr:housenumber]::hn_casing { z-index: -100; symbol-shape: circle; symbol-size: +2; symbol-fill-color: blue; }
- inversigi kolorojn
*::* { color: eval(rgb(1 - red(prop(color)), 1 - green(prop(color)), 1 - blue(prop(color)))); fill-color: eval(rgb(1 - red(prop(fill-color)), 1 - green(prop(fill-color)), 1 - blue(prop(fill-color)))); }
- hazardaj aferoj
way { width: eval(random() * 20); color: eval(rgb(random(), random(), random())); }
- regexp-kongrua ekzemplo: ŝanĝi "nameXXXsubname" al "name::subname"
*[name=~/.+XXX.+/] { _match: regexp_match("(.+?)XXX(.+)", tag("name")); text: concat(get(prop("_match"),1), "::", get(prop("_match"),2)); }
- pentri konstruaĵojn en malsamaj koloroj laŭ strato en la adresaj etikedoj
area[building][addr:street] { fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7); fill-opacity: 0.8; }
- kovraĵo ene de areo
area[building]:clockwise { right-casing-width: 10; } area[building]:anticlockwise { left-casing-width: 10; } /* aŭ */ area[building][is_clockwise()] { right-casing-width: 10; } area[building][is_anticlockwise()] { left-casing-width: 10; }
- uskleco-sentiva elektilo. Ĉi tio kongruas:
Name=Main Street
, sed ankaŭnaMe=MAIN STREET
way[/(?i)^name$/ =~ /(?i)^Main Street$/] { }
Kongruecaj notoj
MapCSS 0.2
Gramatiko
way[oneway=yes]
ne havas iun ajn magion, vi povas uziway[oneway?]
anstataŭe- neniu
@import
- JOSM ne postulas
eval(...)
esti ĉirkaŭita ĉirkaŭ esprimoj, sed por kongrueco kun aliaj MapCSS-implementoj vi devus skribi ĝin.
Propraĵoj
Nuntempe, JOSM ne subtenas la sekvajn propraĵojn:
- line:
-
image
- label:
-
font-variant, text-decoration, text-transform, max-width
- shield:
- ne subtenata
Halcyon (Potlatch 2)
- Teksta etikedo estas metita en la centro de la ikono. Por kongrueco kun Halcyon metu
ĉe la komenco de via stila folio.
node { text-anchor-vertical: center; text-anchor-horizontal: center; }
- norma z-indekso en Halcyon estas 5, sed ĝi estas 0 en JOSM
image: circle;
respondas alsymbol-shape: circle;
Kothic
- Kothic havas subtenon por eval, kiu verŝajne diferencas de JOSM-a eval.
- Kothic komprenas unuojn, dum JOSM ĉiam kalkulas en rastrumeroj.
- La elstaraĵaj trajtoj ne estas haveblaj en JOSM.
Ceyx
- ŝajne havas
[tunnel=1]
anstataŭ[tunnel=yes]
(Halcyon) aŭ[tunnel?]
(JOSM)
Mediaj pridemandadoj (malrekomenditaj)
Noto: mediaj pridemandadoj estas malrekomenditaj. Vi devus uzi @supports regulojn anstataŭe (vidu supre). |
Mediaj pridemandadoj estas uzataj por preterlasi sekcion de la stilo sub certaj kondiĉoj. Kutime vi volas uzi trajton, kiu estas enkondukita en pli nova versio de JOSM, sed havi rezervan stilon por uzantoj de malnovaj JOSM-klientoj. Ĉi tiu trajto venis kun r6970. Ekzemplo:
@media (min-josm-version: 9789) { way[highway] { width: 4; color: orange; } /* fancy new stuff */ /* ... */ } @media (max-josm-version: 9788) { way[highway] { width: 4; color: blue; } /* fall back mode, using more simple features */ /* ... */ }
La sintakso proksime kongruas kun la oficiala css sintakso. La sekvaj kondiĉoj estas subtenataj:
Media kondiĉo | Priskribo |
---|---|
(min-josm-version: <number>) |
Nur inkluzivi |
(max-josm-version: <number>) |
Nur inkluzivi |
(user-agent: <string>) |
Nur inkluzivi |
Kondiĉoj povas esti kombinitaj kun and
:
@media (min-josm-version: 6970) and (max-josm-version: 7014) { /* nur por JOSM-versioj 6970 ĝis 7014 */ }
Multoblaj kombinitaj kondiĉoj povas esti ĉenitaj per komo (logika aŭ):
@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) { /* por JOSM-versio 6970 ĝis 7014 kaj por la redaktilo nomata "myEditor" */ }
Ĉar mediaj pridemandadoj estas nur subtenataj en JOSM 6970 kaj poste, vi devus ankaŭ specifi ĉi tion kiel minimuman JOSM-version en la meta-elektilo:
meta { min-josm-version: "6970"; /* Ĉi tiu stilo uzas mediajn pridemandadojn */ /* ... */ }