[[TranslatedPages(revision=268)]] [[PageOutline(2-10,Enhavtabelo)]] = MapCSS-Implementado = La implementado de JOSM de [osmwiki:MapCSS/0.2 MapCSS] estas uzata por la sekvaj trajtoj: * [wikitr:/Styles Mapaj stiloj] * [wikitr:/Rules Validator reguloj], vidu [wikitr:/Help/Validator/MapCSSTagChecker MapCSS-etikedokontrolilo] por la speciala parto nur por reguloj. * [wikitr:/Help/Action/Search Serĉa dialogo] Konsideru instali la [https://marketplace.visualstudio.com/items?itemName=whammo.mapcss-syntax 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 {{{ #!mapcss 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: {{{ #!mapcss /* *[highway][name =~ /^R(\.|:)? .*/] { /* la fino de la regula esprimo difinas la neatenditan finon de la komento */ throwWarning: tr("foo"); } */ }}} == Elektiloj == #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: {{{ #!mapcss /* 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 === {{{#!th valign=top '''Elektilo''' }}} {{{#!th valign=top '''Priskribo''' }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top * }}} {{{#!td align=left valign=top Kongruas kun iu ajn objekto }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `node`, `way`, `relation` }}} {{{#!td align=left valign=top Kongruas kun la OSM-objektoj de la donita tipo. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `area` }}} {{{#!td align=left valign=top 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. {{{ #!mapcss area[natural=beach] {...} /* ... egalas al ... */ way[natural=beach], relation[type=multipolygon][natural=beach] {...} }}} Notu ke `area` elektas ankaŭ nefermitajn vojojn, do povas esti utile aldoni la `:closed` pseŭdoklason. La JOSM-Validilo donos averton por nefermitaj vojoj, kiuj havas arean stilon. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `meta` }}} {{{#!td align=left valign=top La `meta` elektilo komencas specialan regulon, kiu devus stari ĉe la komenco de la dosiero. Ĝi donas iujn ĝeneralajn informojn pri la stila folio. Ĉiu programaro, kiu subtenas MapCSS, devus povi analizi ĉi tiujn sekciojn sen eraroj, do ne uzu ekzotajn sintaksajn etendaĵojn en ĉi tiu parto. {{{ #!mapcss 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 */ } }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `canvas` }}} {{{#!td align=left valign=top Iuj stilaj informoj ne specifaj al nodoj, vojoj aŭ rilatoj. {{{ #!mapcss canvas { fill-color: #ffffea; /* la antaŭa background-color estas malrekomendita ekde r7110 */ default-points: false; default-lines: false; } }}} {{{#!th '''Ŝlosilo''' }}} {{{#!th '''Priskribo''' }}} {{{#!th '''Valora Formato''' }}} {{{#!th '''Defaŭlta Valoro''' }}} |- {{{#!td align=center `fill-color` }}} {{{#!td Specifas la ĝeneralan plenigan/fonan koloron (`background-color` estas malrekomendita ekde r7110). }}} {{{#!td align=center ''Koloro'' }}} {{{#!td align=center `black` }}} |- {{{#!td align=center `default-points` }}} {{{#!td Ĉu defaŭlta punkta stilo devus esti aldonita al nodoj, kie neniu stilo aplikeblas. }}} {{{#!td align=center ''Bulea'' }}} {{{#!td align=center `true` }}} |- {{{#!td align=center `default-lines` }}} {{{#!td Ĉu defaŭlta linia stilo devus esti aldonita al vojoj, kie neniu stilo aplikeblas. }}} {{{#!td align=center ''Bulea'' }}} {{{#!td align=center `true` }}} }}} === 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: {{{ #!mapcss /* * 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 [#LinkSelector 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: {{{ #!mapcss /* * 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. [=#condition_selector_operators] {{{#!th valign=top '''Operacilo''' }}} {{{#!th valign=top '''Priskribo''' }}} {{{#!th valign=top '''Ekzemplo''' }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `=` }}} {{{#!td align=left valign=top Ekzakta kongruo de la valoro. }}} {{{#!td align=left valign=top {{{ #!mapcss 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 */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `!=` }}} {{{#!td align=left valign=top Valoro ne egalas }}} {{{#!td align=left valign=top {{{ #!mapcss way[highway!=residential] node[name!="My name"] node["name:pl"!="Królewiec"] }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `<`, `>`, `<=`, `>=` }}} {{{#!td align=left valign=top Komparo por nombraj valoroj. }}} {{{#!td align=left valign=top {{{ #!mapcss node[population >= 50000] /* loĝantaro pli granda ol aŭ egala al 50000 */ node[ele = 3000] /* alteco kun ekzakte 3000 metroj */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `^=` }}} {{{#!td align=left valign=top Prefiksa kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss node[name ^= "myprefix"] /* valoro komenciĝas per 'myprefix' */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `$=` }}} {{{#!td align=left valign=top Sufiksa kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss node[name $= "mypostfix"] /* valoro finiĝas per 'mypostfix' */ }}} }}} |----------------------------------------------- {{{#!td align=center valign=top `*=` }}} {{{#!td align=left valign=top Subĉena kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss node[name *= "my substring"] /* valoro enhavas la subĉenon 'my substring' */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `~=` }}} {{{#!td align=left valign=top Lista membreco }}} {{{#!td align=left valign=top {{{ #!mapcss *[vending~=stamps] /* la etikeda valoro por la etikedo 'vending' konsistas el listo de ;-apartigitaj valoroj */ /* kaj unu el ĉi tiuj valoroj estas 'stamps' */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `=~` }}} {{{#!td align=left valign=top [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Regula esprimo] kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss *[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 `(?i)` (vidu [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#CASE_INSENSITIVE Pattern.CASE_INSENSITIVE]). {{{ #!mapcss *[name =~ /^(?i)(parking)$/] /* kongruas kun parking, Parking, PARKING, PaRkInG,... */ *[name =~ /^(?U)(\p{Lower})+$/] /* nomo konsistas nur el minusklaj unikodaj signoj */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `!~` (ekde r6455) }}} {{{#!td align=left valign=top negita [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Regula esprimo] kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss *[surface!~/paved|unpaved/] }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `∈` ([https://www.fileformat.info/info/unicode/char/2208/index.htm U+2208], ekde r6609) }}} {{{#!td align=left valign=top elemento de Kongruas kiam objekto kongruas kun la dekstra(j) elektilo(j) enhavas almenaŭ unu elementon, kiu kongruas kun la maldekstra(j) elektilo(j). }}} {{{#!td align=left valign=top {{{ #!mapcss *[amenity=parking] ∈ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); } }}} Trovas areojn kun `amenity=parking`, kiuj enhavas almenaŭ unu nodon aŭ areon kun `amenity=parking`. Ekde r15064 ĉi tiu regulo produktas unu averton por ĉiu elemento maldekstre, kiam estas multaj kongruoj. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `⊆` ([https://www.fileformat.info/info/unicode/char/2286/index.htm U+2286], ekde r15102) }}} {{{#!td align=left valign=top Subaro de aŭ Egala Al Sinonimo por `∈`. }}} {{{#!td align=left valign=top {{{ #!mapcss *[amenity=parking] ⊆ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); } }}} }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `⊇` ([https://www.fileformat.info/info/unicode/char/2287/index.htm U+2287], ekde r15102) }}} {{{#!td align=left valign=top 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). }}} {{{#!td align=left valign=top {{{ #!mapcss area[amenity=parking] ⊇ *[amenity=parking] }}} trovas nodojn aŭ areojn kun `amenity=parking` ene de areoj kun `amenity=parking`. Malpli rapida ol `⊆` kaj tial ne utila en validatoraj reguloj, sed povas esti utila en la serĉa dialogo. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `⊈` ([https://www.fileformat.info/info/unicode/char/2288/index.htm U+2288], ekde r15102) }}} {{{#!td align=left valign=top 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). }}} {{{#!td align=left valign=top {{{ #!mapcss *[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes] }}} trovas areojn amenity=parking, kiuj havas lit=yes sed ne enhavas lampon. Ĉiam aldonu `:closed2` por eviti falsajn pozitivojn, ĉar nefermitaj areoj neniam enhavas ion. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `⊉` ([https://www.fileformat.info/info/unicode/char/2289/index.htm U+2289], ekde r15102) }}} {{{#!td align=left valign=top 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). }}} {{{#!td align=left valign=top {{{ #!mapcss 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 `landuse=residential`areojn, kiuj ne kongruas kun `:closed2`. }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `⧉` ([https://www.fileformat.info/info/unicode/char/29c9/index.htm U+29C9], ekde r6613) }}} {{{#!td align=left valign=top kruciĝo }}} {{{#!td align=left valign=top {{{ #!mapcss area:closed:areaStyle ⧉ area:closed:areaStyle { throwOther: tr("Overlapping Areas"); } }}} prenas `layer` etikedon en konsidero, se ĝi estas agordita (ekde r12986) }}} 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: {{{#!th valign=top '''Kondiĉo''' }}} {{{#!th valign=top '''Ekzemplo''' }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Ĉeesto de etikedo }}} {{{#!td align=left valign=top {{{ #!mapcss 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.) */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Manke de etikedo }}} {{{#!td align=left valign=top {{{ #!mapcss 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.) */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Ĉeesto de etikedo per [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Regula esprimo] kongruo (ekde r6547) }}} {{{#!td align=left valign=top {{{ #!mapcss way[/^addr:/] /* kongruas kun iu ajn `addr:*` ŝlosilo */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Manke de etikedo per Regula esprimo kongruo }}} {{{#!td align=left valign=top {{{ #!mapcss 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. {{{#!th valign=top '''Kondiĉo''' }}} {{{#!th valign=top '''Ekzemplo''' }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Testado por vera valoro }}} {{{#!td align=left valign=top {{{ #!mapcss way[oneway?] /* kongruas kun iu ajn vojo kun vera valoro en la etikedo 'oneway' */ }}} }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top Testado por malvera valoro (ekde r6513) }}} {{{#!td align=left valign=top {{{ #!mapcss way[oneway?!] /* kongruas kun iu ajn vojo kun malvera valoro en la etikedo 'oneway' */ }}} }}} === Teritoria Elektilo === #TeritoriaElektilo Vi povas testi, ĉu objekto situas ene aŭ ekster specifa teritorio. JOSM havas internan datumbazon por ĉi tio. La [source:/trunk/resources/data/boundaries.osm teritoria dosiero] povas esti elŝutita kaj malfermita en JOSM por esplori ĝin [attachment:boundaries.png (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 [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 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 [wikitr:/Help/Validator/MapCSSTagChecker mapcss-bazitaj validatoraj reguloj]. Por elekti teritoriojn kun maldekstra-traflanko aŭ dekstra-traflanko, ekzistas pli simpla maniero, vidu [#PseudoClasses Pseŭdoklasoj]. Vidu #10387 por ĉefa implementado de ĉi tiu trajto. {{{ #!mapcss /* 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 ===#LigilaElektilo 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. {{{ #!mapcss relation[type=route] >[role="link"] way { /* kongruas kun iu ajn vojo, kiu estas membro de voja rilato kun rolo 'link' */ color: blue; } }}} {{{#!th valign=top '''Operacilo''' }}} {{{#!th valign=top '''Priskribo''' }}} {{{#!th valign=top '''Ekzemplo''' }}} |------------------------------------------------------------------------------- {{{#!td align=center valign=top `=` }}} {{{#!td align=left valign=top Ekzakta kongruo de la rola nomo. La nomo `role` estas deviga en ĉi tiu kunteksto. }}} {{{#!td align=left valign=top {{{ #!mapcss 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 [#condition_selector_operators 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. {{{ #!mapcss 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 ===#Pseŭdoklasoj Vidu [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.PseudoClasses.html 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 [wikitr:/left-right-hand-traffic 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: {{{ #!mapcss 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: {{{ #!mapcss 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: [[Image(multiple_icons_and_texts.png,ligilo=)]] Krome, vi povas uzi la * tavolon por anstataŭigi kaj pravalorizi ĉiujn tavolojn. \\ Ĝi anstataŭigas ĉiujn ekzistantajn subpartojn, do {{{ #!mapcss way::A { a; } way::B { b; } way::* { c; } /* anstataŭigas ĉiujn ekzistantajn subpartojn */ }}} egalas al {{{ #!mapcss 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: {{{ #!mapcss way::* { a; } way::A { b; } }}} egalas al {{{ #!mapcss way::A {} way::* { a; } way::A { b; } }}} kio siavice estas la sama kiel {{{ #!mapcss way::A { a; } way::A { b; } }}} aŭ {{{ #!mapcss way::A { a; b; } }}} === Grupiĝo === Reguloj kun komuna deklara bloko povas esti grupigitaj en unu: {{{ #!mapcss area[landuse=forest] { color: green; width: 2; } area[natural=wood] { color: green; width: 2; } }}} estas la sama kiel {{{ #!mapcss 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: {{{ #!mapcss /* asigni klasojn */ elektilo { set klaso; /* aŭ ekvivalente */ set .klaso; } /* kongrui klasojn */ way.klaso, node[foo=bar].klaso { /* ... */ } }}} Ekzemplo por asigni/kongrui klason nomatan `path`: {{{ #!mapcss 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. {{{#!mapcss 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: {{{ #!mapcss @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 [https://drafts.csswg.org/css-conditional/ css sintakso]. La sekvaj kondiĉoj estas subtenataj: {{{#!th '''Kondiĉo''' }}} {{{#!th '''Priskribo''' }}} |- {{{#!td ('''') }}} {{{#!td Kontrolu, ĉu certa mapcss-ŝlosilo estas subtenata, ekz. `repeat-image` aŭ `icon-offset-x`. }}} |- {{{#!td (min-josm-version: '''') }}} {{{#!td Nur inkluzivi `@supports` sekcion, kiam la aktuala versio de JOSM estas pli granda ol aŭ egala al la specifita nombro. }}} |- {{{#!td (max-josm-version: '''') }}} {{{#!td Nur inkluzivi `@supports` sekcion, kiam la aktuala versio de JOSM estas malpli granda ol aŭ egala al la specifita nombro. }}} |- {{{#!td (user-agent: '''') }}} {{{#!td Nur inkluzivi `@supports` sekcion, kiam la nomo de la redaktilo / prezentilo kongruas kun la donita ĉeno. En JOSM, la sola akceptata valoro estas `josm`. }}} Kondiĉoj povas esti kombinitaj kun `and`: {{{ #!mapcss @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: {{{ #!mapcss @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: {{{ #!mapcss meta { min-josm-version: "8087"; /* Ĉi tiu stilo uzas @supports regulojn */ /* ... */ } }}} == Stilaj Agordoj == [wikitr:/Help/Dialog/MapPaint/StyleSettings Stilaj agordoj] estas uzataj por provizi al la uzanto agordojn por adapti mapan stilon. La uzanto povas uzi ilin en la [wikitr:/Help/Dialog/MapPaint 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`: {{{ #!mapcss setting::highway_casing { type: boolean; label: tr("Draw highway casing"); default: true; } }}} Uzi agordon de tipo `boolean`: {{{ #!mapcss way[highway][setting("highway_casing")] { casing-width: 2; casing-color: white; } }}} === Agordoj de tipo `double` === Krei agordon de tipo `double`: {{{ #!mapcss setting::place_font_size { type: double; label: tr("Set place name font size..."); default: 11; } }}} Uzi agordon de tipo `double`: {{{ #!mapcss node.place, way.place, area.place { font-size: setting("place_font_size"); } }}} === Agordoj de tipo `string` === Krei agordon de tipo `string`: {{{ #!mapcss 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`: {{{ #!mapcss 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 [wikitr:/Help/Styles/MapCSSImplementation#Propertyvaluesexplanations Priskribo de propraĵaj valoroj]: {{{ #!mapcss setting::colordisplay { type: color; label: tr("key used for displaying"); default: colorDisplayCustomPref#FF00FF; } }}} Uzi agordon de tipo `color`: {{{ #!mapcss way { color: setting("colordisplay"); } }}} === Grupiĝo de agordoj === Similaj agordoj povas esti grupigitaj kune per difini ''agordajn grupojn'' (ekde r15289): {{{ #!mapcss 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: {{{ #!mapcss 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: [wikitr:/Styles/MapWithAI MapWithAI]. == Propraĵoj ==#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ŭ [wikitr:/Help/Styles/Images 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` ([https://developer.mozilla.org/en/docs/Web/CSS/angle 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 ===#LiniajStiloj ||= '''Ŝ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 [https://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty ĉ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 ===#AreajStiloj ||= '''Ŝ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 === {{{#!th valign=top '''Ŝlosilo''' }}} {{{#!th valign=top '''Priskribo''' }}} {{{#!th valign=top '''Valora Formato''' }}} {{{#!th valign=top '''Defaŭlta Valoro''' }}} |------------------------------------------------------------------------------- {{{#!td align=left valign=top `text` }}} {{{#!td align=left valign=top Kiel trovi la etikedan tekston.\\Neniu etikedo estas montrata, krom se ĉi tiu instrukcio estas ĉeesta. }}} {{{#!td align=left valign=top `auto` Derivu la tekston aŭtomate. La defaŭltaj nomaj etikedoj estas: "`name:`"+'''', \\"`name`", "`int_name`", "`ref`", "`operator`", "`brand`" kaj "`addr:housenumber`". Agordu liston de etikedaj nomoj en la prefero "`mappaint.nameOrder`" por \\ ŝanĝi ĉi tiun liston. (Post ŝanĝi la liston, restartigo de JOSM estas necesa.) ''Ĉeno'' Indikas la ŝlosilon de la etikedo, kies valoro estas uzata kiel teksto. ''Esprimoj'' Vi povas enigi esprimon por kalkuli la tekston, kiu estos montrata. Ekzemploj: * `eval("this is a static text")` - montras statikan tekston * `eval(concat(tag("first"), "-", tag("second")))` - montras \\ la kunmetitajn etikedojn "first" kaj "second" `""` Por forigi antaŭe agorditan tekston. }}} {{{#!td align=center valign=top - }}} |------------------------------------------------------------------------------- || `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` \\([https://developer.mozilla.org/en/docs/Web/CSS/angle 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 [#AreajStiloj Areaj stiloj] kaj [#LiniajStiloj 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 [wikitr:/Styles Mapaj stiloj] vi povas difini iun ajn propran propraĵon, ekz.: `crc: CRC32_checksum(tag(name))/429496.7296;` * En [wikitr:/Rules Validatoraj reguloj] ili devas esti prefiksitaj per `-`, ekz.: `-osmoseItemClassLevel: "1210/1/1";` === Priskribo de propraĵaj valoroj === #PriskriboDePropraĵajValoroj '' '''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`. Por `casing-width`, ĉi tio referencas al la `width` valoro sur la sama tavolo. '' '''Bildo''' '' Vidu [wikitr:/Help/Styles/Images]. '' '''Koloro''' '' * nomita koloro kiel trovita en [https://www.w3.org/TR/css3-color/#svg-color ĉi tiu] listo * html-stilo: '''`#RRGGBB`''', '''`#RGB`''', '''`#RRGGBBAA`''' * '''`rgb(/*r*/, /*g*/, /*b*/)`''' - rgb valoro kun argumentoj de 0.0 ĝis 1.0 * '''`rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)`''' - rgb valoro kun alfa * '''`hsb_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 [wikitr:/Help/Preferences/ColorPreference 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 ==#EvalEsprimoj Vidu [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#method_summary 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, [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html 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):: [https://en.wikipedia.org/wiki/Percent-encoding procento-kodigi] ĉenon. Povas esti utila por datumaj URL-oj [''ekde r6805''] URL_decode(str):: [https://en.wikipedia.org/wiki/Percent-encoding 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 2^32^-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")` kaj `html2color(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 [wikitr:/Help/Styles/MapCSSImplementation#StilajAgordoj 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 {{{ #!mapcss 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 {{{ #!mapcss *::* { 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 {{{ #!mapcss way { width: eval(random() * 20); color: eval(rgb(random(), random(), random())); } }}} * regexp-kongrua ekzemplo: ŝanĝi "nameXXXsubname" al "name::subname" {{{ #!mapcss *[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 {{{ #!mapcss 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 {{{ #!mapcss 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` {{{ #!mapcss way[/(?i)^name$/ =~ /(?i)^Main Street$/] { } }}} == Kongruecaj notoj == === MapCSS 0.2 === ==== Gramatiko ==== * `way[oneway=yes]` ne havas iun ajn magion, vi povas uzi `way[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 {{{ #!mapcss node { text-anchor-vertical: center; text-anchor-horizontal: center; } }}} ĉe la komenco de via stila folio. * norma z-indekso en Halcyon estas 5, sed ĝi estas 0 en JOSM * '''`image: circle;`''' respondas al '''`symbol-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) == {{{#!td style="background-color: #faa" 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: {{{ #!mapcss @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 [https://www.w3.org/TR/css3-mediaqueries/#syntax css sintakso]. La sekvaj kondiĉoj estas subtenataj: {{{#!th '''Media kondiĉo''' }}} {{{#!th '''Priskribo''' }}} |- {{{#!td (min-josm-version: '''') }}} {{{#!td Nur inkluzivi `@media` sekcion, kiam la aktuala versio de JOSM estas pli granda ol aŭ egala al la specifita nombro. }}} |- {{{#!td (max-josm-version: '''') }}} {{{#!td Nur inkluzivi `@media` sekcion, kiam la aktuala versio de JOSM estas malpli granda ol aŭ egala al la specifita nombro. }}} |- {{{#!td (user-agent: '''') }}} {{{#!td Nur inkluzivi `@media` sekcion, kiam la nomo de la redaktilo / prezentilo kongruas kun la donita ĉeno. En JOSM, la sola akceptata valoro estas `josm`. }}} Kondiĉoj povas esti kombinitaj kun `and`: {{{ #!mapcss @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ŭ''): {{{ #!mapcss @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: {{{ #!mapcss meta { min-josm-version: "6970"; /* Ĉi tiu stilo uzas mediajn pridemandadojn */ /* ... */ } }}} {{{#!comment Ekzistas ankaŭ la `not` ŝlosilvorto (vidu la ligitan css-dokumenton por detaloj). Ĉi tio estas implementita, sed verŝajne ne tre utila. Bonvolu aldoni dokumentadon. }}}