wiki:Nb:Help/Styles/MapCSSImplementation

MapCSS Implementering

JOSMs implementering av MapCSS brukes for følgende funksjoner:

Vurder å installere MapCSS Syntax Highlighter i VS Code for å legge til visuell fremheving for MapCSS malings- og valideringssyntaks.

Generell Struktur

Et MapCSS stilark har regler på formen: #!mapcss selector {

prop: verdi; /* ... */ prop: verdi; /* og/eller */ set: klasse; set: .klasse; /* merk at valideringsregler ikke bruker kolon etter set */

}

Algoritmen for å finne stilene for et gitt objekt er som følger:

  • for hver regel:

hvis selektoren gjelder, sett egenskapene fra { }-blokken

  • analyser den endelige listen over egenskaper og generer stiler fra den

MapCSS bruker CSS-kommentarformatet (/* ... */). Merk at når du kommenterer ut store deler av en MapCSS-fil, kan noen konstruksjoner føre til en uventet avslutning av kommentaren, for eksempel: #!mapcss /* *[highway][name =~ /R(\.|:)? .*/] { /* slutten av det regulære uttrykket definerer den uventede slutten av kommentaren */

throwWarning: tr("foo");

} */

Selektorer

Selektorer angir filteruttrykkene for en MapCSS-regel. Regelen brukes kun på et kartobjekt hvis selektorene samsvarer med objektet.

Selektorer i MapCSS er forskjellige fra standard CSS for web. MapCSS støtter kun en delmengde av standard CSS-selektorer, men utvider dem med tilleggsselektorer som kreves for OSM-data.

Noen grunnleggende eksempler: #!mapcss /* brukes på veier med en tag highway=residential */ way[highway=residential] { /* stilene */ }

/* brukes på nye, lukkede veier på lag 1, forutsatt at de har taggen amenity=parking og access=customers, og forutsatt at zoomnivået er mellom 11 og 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 {..}

Type-selektor

#!th valign=top Selektor #!th valign=top Beskrivelse

#!td align=center valign=top * #!td align=left valign=top Samtlige objekter

#!td align=center valign=top node, way, relation #!td align=left valign=top Samtlige OSM-objekter av den angitte typen.

#!td align=center valign=top area #!td align=left valign=top Samtlige områder, uavhengig av om områdegrensen kun er modellert med en enkelt vei eller med et sett av veier limt sammen med en relasjon. #!mapcss area[natural=beach] {...} /* ... er lik ... */ way[natural=beach], relation[type=multipolygon][natural=beach] {...} Merk at area velger også ulukkede veier, så det kan være nyttig å legge til :closed pseudo-klassen. JOSM-valideringen vil gi en advarsel for ulukkede veier som har en områdestil.

#!td align=center valign=top meta #!td align=left valign=top meta-selektoren starter en spesiell regel som bør stå i begynnelsen av filen. Den gir generell informasjon om stilarket. All programvare som støtter MapCSS bør kunne parse denne delen uten feil, så ikke bruk eksotisk syntaks i denne delen. #!mapcss meta {

title: "Parkering felt"; /* tittel vist i menyen */ icon: "logo_16x16x8.png"; /* lite ikon vist i menyen ved siden av tittelen */ version: "1.2"; /* versjonen av stilen */ description: "..."; /* en eller to setninger som beskriver stilen */ author: "..."; /* forfatteren(e) av stilen */ link: "https://..."; /* URL til stilens nettside */ min-josm-version: 6789; /* minimum JOSM-versjon der denne stilen fungerer */

}

#!td align=center valign=top canvas #!td align=left valign=top Noen stilinformasjon som ikke er spesifikk for noder, veier eller relasjoner. #!mapcss canvas {

fill-color: #ffffea; /* den tidligere background-color er utdatert siden r7110 */ default-points: false; default-lines: false;

} #!th Nøkkel #!th Beskrivelse #!th Verdiformat #!th Standardverdi

#!td align=center fill-color #!td Angir fyll-/bakgrunnsfargen (background-color er utdatert siden r7110). #!td align=center Farge #!td align=center black

#!td align=center default-points #!td Om standard punktstil skal legges til noder der ingen stil gjelder. #!td align=center Boolean #!td align=center true

#!td align=center default-lines #!td Om standard linjestil skal legges til veier der ingen stil gjelder. #!td align=center Boolean #!td align=center true

Barneselektor

Hvis en node er en del av en vei, sier vi at den er et barn av denne veien. På samme måte, hvis en node, en vei eller en relasjon er et medlem av en relasjon, sier vi at den er et barn av denne relasjonen.

I MapCSS kan du bruke en barneselektor som kun samsvarer hvis både foreldre- og barneobjektet samsvarer.

Eksempel: #!mapcss /*

  • samsvarer kun med en vei som er et barn av en relasjon med tagger
  • type=route og route=foot */

relation[type=route][route=foot] > way {...}

Merk:

  • Zoom-selektor og lag-identifikator er kun relevant for delen til høyre for >-tegnet.
  • Funksjonene prop() og is_prop_set() støttes kun på høyre side av >-tegnet.
  • Funksjonene parent_tag og parent_tags (se nedenfor) kan brukes for å få tilgang til tagger fra foreldreobjekt(er).
  • For kompatibilitet med MapCSS 0.2-standarden støttes også relation[type=route][route=foot] way {/*...*/}, uten større-enn-tegnet >. Imidlertid kan ingen Lenkeselektor spesifiseres i dette tilfellet.

Foreldreselektor

I tillegg til barneselektorer støtter JOSM begrepet en foreldreselektor. Merk at foreldreselektorer er en JOSM-spesifikk utvidelse av MapCSS som ikke finnes i andre MapCSS-implementeringer.

I likhet med en barneselektor samsvarer en foreldreselektor kun hvis både foreldre- og barneobjektet samsvarer. I motsetning til barneselektoren brukes tegnet <.

I motsetning til barneselektoren vil foreldreobjektet bli "valgt". Med andre ord gjelder egenskapene i {{{...}}}-deklarasjonsblokken for objektet på høyre side av "<"-tegnet.

Eksempel: #!mapcss /*

  • samsvarer med en vei som har minst én node merket som traffic_calming=* */

node[traffic_calming] < way[highway] {...}

Tilstandselektor

Selektorer kan inkludere et sett med tilstander. Hvis noen av disse tilstandene evalueres til false, samsvarer ikke selektoren, og stilregelen brukes ikke.

En attributttilstand angir en tilstand for en tagg på et OSM-objekt.

#!th valign=top Operator #!th valign=top Beskrivelse #!th valign=top Eksempel

#!td align=center valign=top = #!td align=left valign=top Eksakt samsvar med verdien. #!td align=left valign=top #!mapcss way[highway=residential] /* er case-sensitiv, dvs. samsvarer IKKE f.eks. highway=Residential eller Highway=residential */ node[name="Mitt navn"] /* bruk anførselstegn hvis nøkkel eller verdi inkluderer mellomrom */ node["name:pl"="Królewiec"] /* bruk anførselstegn hvis nøkkel eller verdi inkluderer spesialtegn som kolon eller unicode-tegn */

#!td align=center valign=top != #!td align=left valign=top Verdi er ikke lik #!td align=left valign=top #!mapcss way[highway!=residential] node[name!="Mitt navn"] node["name:pl"!="Królewiec"]

#!td align=center valign=top <, >, <=, >= #!td align=left valign=top Sammenligning for numeriske verdier. #!td align=left valign=top #!mapcss node[population >= 50000] /* befolkning større enn eller lik 50000 */ node[ele = 3000] /* høyde med nøyaktig 3000 meter */

#!td align=center valign=top ^= #!td align=left valign=top Prefiks-samsvar #!td align=left valign=top #!mapcss node[name = "mittprefiks"] /* verdi starter med 'mittprefiks' */

#!td align=center valign=top $= #!td align=left valign=top Suffiks-samsvar #!td align=left valign=top #!mapcss node[name $= "mittsuffiks"] /* verdi slutter med 'mittsuffiks' */

#!td align=center valign=top *= #!td align=left valign=top Delstreng-samsvar #!td align=left valign=top #!mapcss node[name *= "min delstreng"] /* verdi inneholder delstrengen 'min delstreng' */

#!td align=center valign=top ~= #!td align=left valign=top Listemedlemskap #!td align=left valign=top #!mapcss *[vending~=stamps] /* taggverdien for taggen 'vending' består av en liste med ;-separerte verdier */

/* og en av disse verdiene er 'stamps' */

#!td align=center valign=top =~ #!td align=left valign=top Regulært uttrykk-samsvar #!td align=left valign=top #!mapcss *[name=~/Mitt_mønster.*/] /* verdien av taggen 'name' samsvarer med det regulære uttrykket 'Mitt_mønster.*' */

/* Merk at regulære uttrykk må omsluttes med /.../ */

Case-insensitive matching kan aktiveres via det innebygde flagguttrykket (?i) (se Pattern.CASE_INSENSITIVE). #!mapcss *[name =~ /(?i)(parkering)$/] /* samsvarer med parkering, Parking, PARKING, PaRkInG,... */ *[name =~ /(?U)(\p{Lower})+$/] /* name består kun av små bokstaver i unicode */

#!td align=center valign=top !~ (siden r6455) #!td align=left valign=top negert Regulært uttrykk-samsvar #!td align=left valign=top #!mapcss *[surface!~/asfaltert|uasfaltert/]

#!td align=center valign=top (U+2208, siden r6609) #!td align=left valign=top element av

Samsvarer når et objekt som samsvarer med høyre selektor(er) inneholder minst ett element som samsvarer med venstre selektor(er). #!td align=left valign=top #!mapcss *[amenity=parking] ∈ area[amenity=parking] {

throwWarning: tr("{0} innenfor {1}", "amenity=parking", "amenity=parking");

} Finner områder med amenity=parking som inneholder minst én node eller område med amenity=parking. Siden r15064 produserer denne regelen én advarsel for hvert element på venstre side når det er flere treff.

#!td align=center valign=top (U+2286, siden r15102) #!td align=left valign=top Delmengde av eller lik

Synonym for . #!td align=left valign=top #!mapcss *[amenity=parking] ⊆ area[amenity=parking] {

throwWarning: tr("{0} innenfor {1}", "amenity=parking", "amenity=parking");

}

#!td align=center valign=top (U+2287, siden r15102) #!td align=left valign=top Overmengde av eller lik

Samsvarer når et objekt som samsvarer med høyre selektor(er) er inneholdt i ett eller flere elementer som samsvarer med venstre selektor(er). #!td align=left valign=top #!mapcss area[amenity=parking] ⊇ *[amenity=parking] Finner noder eller områder med amenity=parking innenfor områder med amenity=parking. Tregere enn og derfor ikke nyttig i valideringsregler, men kan være nyttig i søkedialogen.

#!td align=center valign=top (U+2288, siden r15102) #!td align=left valign=top Verken en delmengde av eller lik

Samsvarer når et objekt som samsvarer med høyre selektor(er) ikke inneholder noe element som samsvarer med venstre selektor(er). #!td align=left valign=top #!mapcss *[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes] Finner områder med amenity=parking som har lit=yes men ikke inneholder en lampe. Legg alltid til :closed2 for å unngå falske positive, da ulukkede områder aldri inneholder noe.

#!td align=center valign=top (U+2289, siden r15102) #!td align=left valign=top Verken en overmengde av eller lik

Samsvarer når et objekt som samsvarer med høyre selektor(er) ikke er inneholdt i noe område som samsvarer med venstre selektor(er). #!td align=left valign=top #!mapcss area[landuse=residential] ⊉ *[building] Finner bygninger som ikke er innenfor noe område med landuse=residential. Merk at denne operatoren sannsynligvis vil produsere falske positive når du har landuse=residential-områder som ikke samsvarer med :closed2.

#!td align=center valign=top (U+29C9, siden r6613) #!td align=left valign=top kryssing #!td align=left valign=top #!mapcss area:closed:areaStyle ⧉ area:closed:areaStyle {

throwOther: tr("Overlappende områder");

} Tar hensyn til layer-taggen hvis den er satt (siden r12986)

Territoriumselektor

Du kan teste om et objekt ligger innenfor eller utenfor et spesifikt territorium. JOSM har en intern database for dette. Territoriumsfilen kan lastes ned og åpnes i JOSM for å undersøke den (skjermbildeforhåndsvisning). Den inneholder grenser for alle land i verden. På grunn av ytelseshensyn er grensene forenklet. De kan raffinieres for spesielle tilfeller på forespørsel. Territoriene er "tagget" med sine ISO_3166-1_alpha-2-koder. USA, Canada, Kina, India og Australia har tilleggsgrenser for sine underavdelinger. Se følgende eksempler på hvordan du bruker territoriumselektorene. Territoriumselektorer er mindre nyttige i malingsstiler og kan være svært ressurskrevende der. Imidlertid er de mye mer nyttige for mapcss-baserte valideringsregler. For å velge territorier med venstre- eller høyrekjøring, finnes det en enklere måte, se Pseudo-klasser. Se #10387 for hovedimplementeringen av denne funksjonen.

#!mapcss

/* samsvarer med enhver node som ligger … */

node[inside("NO")] /* … innenfor Norge (inkluderer oversjøiske territorier) */ node[inside("EU")] /* … innenfor Den europeiske union */ node[inside("NO,SE")] /* … innenfor Norge ELLER innenfor Sverige */ node[inside("US-CA")] /* … innenfor den amerikanske delstaten California */

node[outside("NO")] /* … utenfor Norge */ node[outside("NO,SE")] /* … utenfor Norge OG utenfor Sverige */ node[inside("US")][outside("US-CA")] /* … innenfor USA unntatt delstaten California */

Lenkeselektor

I en barneselektor kan du formulere betingelser på lenken mellom et foreldre- og et barneobjekt.

Hvis forelderen er en relasjon, kan du formulere betingelser for rollen et medlemsobjekt har i denne relasjonen. #!mapcss relation[type=route] >[role="link"] way { /* samsvarer med enhver vei som er et medlem av en ruterelasjon med rollen 'link' */

color: blue;

}

#!th valign=top Operator #!th valign=top Beskrivelse #!th valign=top Eksempel

#!td align=center valign=top = #!td align=left valign=top Eksakt samsvar med rollenavnet. Navnet role er obligatorisk i denne sammenhengen. #!td align=left valign=top #!mapcss relation >[role=residential] way relation >[role="Mitt navn"] way /* bruk anførselstegn hvis rollen inkluderer mellomrom eller andre spesialtegn */

Operatorene !=, ^=, $=, *= og ~= støttes også. Se tilstandsselektoroperatorer for detaljer.

Noder i veier og medlemmer i relasjoner er ordnet. Du kan formulere betingelser på posisjonen til en node i en vei eller et medlemsobjekt i en relasjon. Positive tall teller fra første til siste element, negative tall (siden r8236) teller fra siste til første element.

#!mapcss relation[type=route] >[index=1] way { /* samsvarer med den første veien som er et medlem av ruterelasjonen */

color: blue;

}

way >[index=-1] node { /* samsvarer med den siste noden i en vei */

symbol-stroke-color: green;

}

way!:closed >[index=1] node!:connection, way!:closed >[index=-1] node!:connection { /* samsvarer med alle enkeltvei-sluttnoder */

symbol-stroke-color: green;

}

Zoomselektor

Du kan dekorere en typeselektor med en zoomselektor. Zoomselektoren begrenser rekkevidden av zoomnivåer der den respektive MapCSS-regelen brukes.

Eksempel 1 Eksempel 2 Eksempel 3 Beskrivelse
way|z12 {...} node|z12 {...} node|z12[...] {...} Ved zoomnivå 12
way|z13-15 {...} node|z13-15 {...} way|z13-15[...] {...} Fra 13 til 15
way|z16- {...} node|z16- {...} node|z16-[...] {...} 16 og høyere
way|z-12 {...} node|z-12 {...} node|z-12[...] {...} 12 og lavere
way {...} node{...} way[...] {...} hvilket som helst zoomnivå

Den presise definisjonen av skalarekkene for hvert zoomnivå kan endres i fremtiden. Som tommelfingerregel kan du forvente å være omtrent på zoomnivå n når bilder viser slippymap-brikker av nivå n.

Pseudo-klasser

Se Javadoc for den oppdaterte listen over pseudo-klasser som støttes av JOSMs MapCSS-implementering.

Klasse Beskrivelse
:closed sant for veier der den første noden er den samme som den siste, og for enhver (fullstendig nedlastet) multipolygon-relasjon
:closed2 samme som ovenfor, men denne ignorerer om en multipolygon er fullstendig nedlastet (siden r9099)
:completely_downloaded sant for en relasjon hvis medlemmer alle er nedlastet (siden r9099)
:new alle nye objekter
:connection sant for noder som brukes av mer enn én vei
:unconnected sant for noder som ikke brukes av noen vei (siden r6687)
:tagged Hva JOSM anser som tagget, dvs. et objekt med en taggnøkkel annet enn følgende: source*, source_ref, note, comment, converted_by, created_by, watch*, fixme, FIXME, description, attribution (versjon r4008; i denne listen er * en glob)
:area-style sant hvis objektet har en områdestil
:righthandtraffic sant hvis det er høyrekjøring på gjeldende sted (siden r7193); se venstre-høyre-kjøring for skjermbilde av områder
:clockwise Om veien er lukket og orientert med klokken, eller ikke-lukket og den 1., 2. og siste noden er i klokkeretning.
:anticlockwise Om veien er lukket og orientert mot klokken, eller ikke-lukket og den 1., 2. og siste noden er i motklokkeretning.
:unclosed_multipolygon sant for fullstendig lastede ulukkede multipolygon-relasjoner (siden r8252)
:open_end for å velge sluttnoder av ulukkede multipolygon-relasjoner med relation:unclosed_multipolygon >:open_end node (siden r8252)
:in-downloaded-area sant hvis et objekt er innenfor kildeområdet og usant hvis det er i det skraverte området (siden r8495).
:selected sant hvis et objekt er valgt i editoren (siden r9341).
:highlighted sant hvis objektet er fremhevet
:modified endrede og nye objekter (siden r7193).

Du kan også negere pseudo-klasser. F.eks. !:new for alle gamle objekter.

Lag-identifikator

Lag kan brukes til å lage mer enn én stil for et enkelt objekt. Her er et eksempel: #!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;

} Dette tegner alle sekundære og tertiære veier i henholdsvis gul og oransje. Enhver vei med en access-tagg annet enn yes vil få en ekstra linjestil under (object-z-index:-1.0;) hovedlinjen. Hvis den delen av veien tilfeldigvis er en bro, vil den også få en halvtransparent blå overlegg. Den relative breddeverdien (width: +2;) refererer til bredden på standardlaget (2 eller 3 i dette tilfellet).

Navnet på laget kan være hvilken som helst identifikator.

Hvis du utelater laget i selektoren, er dette det samme som å bruke ::default.

Et eksempel til: #!mapcss node[amenity=parking] {

icon-image: "presets/vehicle/parking/parking.svg"; /* viser JOSMs interne parkeringsikon på standardlaget */ text: ref; /* viser verdien av nøkkelen ref som tekst på standardlaget */

}

node[amenity=parking][fee=yes]::fee {

icon-image: "presets/money/exchange.svg"; /* viser JOSMs interne utvekslingsikon på fee-laget */ icon-offset-x: 14; /* flytt ikonet */ icon-offset-y: -12; /* flytt ikonet */ text: charge; /* viser verdien av nøkkelen charge som tekst på fee-laget */ text-offset-x: 16; /* flytt teksten */ text-offset-y: 17; /* flytt teksten */

} Resultatet ser slik ut:

No image "multiple_icons_and_texts.png" attached to Nb:Help/Styles/MapCSSImplementation

I tillegg kan du bruke *-laget til å overstyre og initialisere alle lag.
Det overstyrer alle eksisterende underdeler, så

#!mapcss way::A { a; } way::B { b; } way::* { c; } /* overstyrer alle eksisterende underdeler */ er ekvivalent med #!mapcss way::A { a; } way::B { b; } way::A { c; } /* overstyrer a med c alle eksisterende underdeler */ way::B { c; } /* overstyrer b med c alle eksisterende underdeler */ Og det initialiserer nye underdeler. Med andre ord: #!mapcss way::* { a; } way::A { b; } er ekvivalent med #!mapcss way::A {} way::* { a; } way::A { b; } som igjen er det samme som #!mapcss way::A { a; } way::A { b; } eller #!mapcss way::A { a; b; }

Gruppering

Regler med felles deklarationsblokk kan grupperes sammen: #!mapcss area[landuse=forest] { color: green; width: 2; } area[natural=wood] { color: green; width: 2; } er det samme som #!mapcss area[landuse=forest], area[natural=wood] { color: green; width: 2; }

Klasser

Du kan tilordne klasser til samsvarende elementer og definere andre selektorer ved hjelp av disse klassene:

#!mapcss /* tilordne klasser / selector { set klasse; / eller tilsvarende */ set .klasse; }

/* samsvarende klasser / way.klasse, node[foo=bar].klasse { / ... */ }

Eksempel på tilordning/samsvar med en klasse kalt 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; } Du kan også negere klasser. F.eks. way!.path for alle veier som ikke er en del av klassen .path.

Klasser og lag sammen

Hvis du ønsker å bruke lag og klasser sammen, merk at du må identifisere klassen via is_prop_set.

#!mapcss node[railway=signal] { set sgnl; }

/* det fungerer ikke */ node.sgnl::layer_signal_icon { z-index: 1000; ... icon: icon/signal-icon.svg; ... } node.sgnl::layer_signal_text { z-index: 1010; ... text: concat("Navn på signal: ", tag("ref")); ..... )

/* bruk i stedet: 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("Navn på signal: ", tag("ref")); ..... )

@supports Betinget Prosessering

@supports-regler brukes til å hoppe over en del av stilen under visse betingelser. Typisk vil du bruke en funksjon som er introdusert i en nyere versjon av JOSM, men ha en fallback-stil for brukere av eldre JOSM-klienter. Denne funksjonen kom med r8087. Eksempel: #!mapcss @supports (min-josm-version: 9789) {

way[highway] {

width: 4; color: orange;

} /* fancy nye ting */ /* ... */

}

@supports (max-josm-version: 9788) {

way[highway] {

width: 4; color: blue;

} /* fallback-modus, bruker enklere funksjoner */ /* ... */

}

@supports (icon-offset-x) {

/* kun hvis icon-offset-x-egenskapen støttes */ node[amenity] {

icon-offset-x: 5;

}

}

Syntaksen følger nøye den offisielle css-syntaksen. Følgende betingelser støttes:

#!th Betingelse #!th Beskrivelse

#!td (<mapcsskey>) #!td Sjekk om en bestemt mapcss-nøkkel støttes, f.eks. repeat-image eller icon-offset-x.

#!td (min-josm-version: <number>) #!td Inkluder kun @supports-delen når den nåværende versjonen av JOSM er større enn eller lik det angitte nummeret.

#!td (max-josm-version: <number>) #!td Inkluder kun @supports-delen når den nåværende versjonen av JOSM er lavere enn eller lik det angitte nummeret.

#!td (user-agent: <string>) #!td Inkluder kun @supports-delen når navnet på editoren / rendereren samsvarer med den gitte strengen. I JOSM er den eneste aksepterte verdien josm.

Betingelser kan kombineres med and:

#!mapcss @supports (min-josm-version: 8087) and (max-josm-version: 8200) {

/* kun for JOSM-versjoner 8087 til 8200 */

}

Andre logiske operatorer som or og not kan også brukes. Parenteser er nødvendige hvis du vil kombinere forskjellige logiske operatorer:

#!mapcss @supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) { /* for JOSM-versjon 8087 til 8200 og for editoren kalt "myEditor" */ }

Siden @supports-regler kun støttes i JOSM r8087 og senere, bør du også spesifisere dette som minimum JOSM-versjon i meta-selektoren:

#!mapcss meta { min-josm-version: "8087"; /* Denne stilen bruker @supports-regler / / ... */ }

Stilinnstillinger

Stilinnstillinger brukes til å gi brukeren innstillinger for å tilpasse en malingsstil. Brukeren kan bruke dem i MapPaint-dialogen. Følgende type av innstillinger er tilgjengelige:

boolean (siden r7450)

double (siden r15731, se #10435)

string (siden r15731, se #10435)

color (siden r16843, se #10435)

Innstillinger av type boolean

Opprett en innstilling av type boolean: #!mapcss setting::highway_casing { type: boolean; label: tr("Tegn veikant"); default: true; }

Bruk en innstilling av type boolean: #!mapcss way[highway][setting("highway_casing")] { casing-width: 2; casing-color: white; }

Innstillinger av type double

Opprett en innstilling av type double: #!mapcss setting::place_font_size { type: double; label: tr("Sett skriftstørrelse for stedsnavn..."); default: 11; }

Bruk en innstilling av type double: #!mapcss node.place, way.place, area.place { font-size: setting("place_font_size"); }

Innstillinger av type string

Opprett en innstilling av type string: #!mapcss setting::textdisplay { type: string; label: tr("nøkkel brukt for visning"); default: "name"; /* eksempler på bruk: alt_name, old_name, addr:housename, ref, operator, ... */ }

Bruk en innstilling av type string: #!mapcss way { text: tag(setting("textdisplay")); }

Innstillinger av type color

Opprett en innstilling av type color. default-fargen kan være hvilken som helst farge som forstås under Egenskapsverdiforklaringer: #!mapcss setting::colordisplay { type: color; label: tr("nøkkel brukt for visning"); default: colorDisplayCustomPref#FF00FF; }

Bruk en innstilling av type color: #!mapcss way { color: setting("colordisplay"); }

Gruppering av innstillinger

Lignende innstillinger kan grupperes sammen ved å definere innstillingsgrupper (siden r15289):

#!mapcss settings::my_group { label: tr("min fantastiske gruppe"); icon: "mitt_vakre_ikon"; }

Når en innstillingsgruppe er definert, kan den refereres fra alle innstillinger som tilhører den:

#!mapcss setting::hide_icons { type: boolean; label: tr("Skjul ikoner ved lavt zoom"); default: true; group: "my_group"; }

Innstillingsgrupper vises som undermenyer fra stilinnstillingsmenyen. Hvis minst to innstillinger tilhører en gruppe, vil en spesiell "Slå av/på alle innstillinger"-menyelement tillate rask av/på-slåing av alle innstillinger fra denne gruppen. Brukseksempel: MapWithAI (en).

Egenskaper

Generelle egenskaper

Nøkkel Beskrivelse Verdiformat Standardverdi
z-index Angi rekkefølgen objektene tegnes i: Objekter med høyere z-index tegnes på toppen av objekter med lavere z-index Nummer (kan være negativt) 0
major-z-index Ligner på z-index, men har høyere prioritet enn z-index. Så hvis ett objekt har en høyere major-z-index enn det andre, tegnes det på toppen. Hvis major-z-index er den samme, bestemmer z-index. Nummer (kan være negativt) Avhenger av stylelement: område: 1, kant: 2, venstre-/høyre-kant: 2.1, linjemønster: 2.9, linje: 3, punkt: 4, standardpunkt: 4.1, linjetekst: 4.9, punkttekst: 5
object-z-index Ligner på z-index, men har lavere prioritet. Kontrollerer tegnerekkefølgen for overlappende objekter. F.eks. for to kryssende veier med tekst: Bruk z-index eller major-z-index hvis du først vil tegne de to linjene og deretter de to tekstene. Bruk object-z-index hvis en av veiene skal være helt på toppen av den andre. Nummer (kan være negativt) 0
modifier Bedre kontroll over om en standard linje / nodesymbol genereres av JOSM. Dette skjer når det ikke finnes en riktig stil (modifier=false) på noe lag. false eller true false for standardlaget og true for alle andre lag

Merk at på grunn av ytelseshensyn er verdiene for de tre z-indeksene begrenset til 24-bit flyttall med maks. 5 desimaler. For øyeblikket bruker den interne malingsstilen verdier med maks. 2 sifre før og etter desimaltegnet. For å unngå problemer, bruk verdier for z-indekser mellom -99.999 og +99.999. (Se også #14485)

Ikon- og symbolstiler

Nøkkel Beskrivelse Verdiformat Standardverdi
icon-image Ikonet ved nodeposisjonen. Se også Bilder. Bilde -
icon-opacity Gjennomsiktighet av ikonbildet Gjennomsiktighet 1.0
icon-width Bredden på ikonet. Hvis bare én av egenskapene icon-width og icon-height er gitt, skal bildet skaleres proporsjonalt. Ikonet vil beholde den opprinnelige størrelsen hvis verken icon-width eller icon-height er satt. Nummer -
icon-height Høyden på ikonet. (Se icon-width) Nummer -
icon-offset-x Flytt ikonet horisontalt (positive verdier til høyre) (siden r8085) Nummer 0
icon-offset-y Flytt ikonet vertikalt (positive verdier nedover) (siden r8085) Nummer 0
icon-rotation Roter ikonet med eller mot klokken (negativ verdi)(siden r8260) [rad], [rad]rad, [deg]°, [deg]deg, [grad]grad, [turn]turn (definisjon) \ eller en kardinalretning (f.eks. northeast eller sw); \ eller way for å rotere ikonet i retningen av foreldreveien. \ Se også funksjonene degree_to_radians, cardinal_to_radians. \Siden versjon 18678 er funksjonen parent_way_angle() et alternativ til way: f.eks. way > node[...]::layer_x { ... icon-rotation: parent_way_angle(); ... } -
icon-position Definer posisjonen til ikonet for områder. Samme som text-position (siden r11730). center, inside, line center
symbol-shape Vis et symbol ved nodeposisjonen square, circle, triangle, pentagon, hexagon, heptagon, octagon, nonagon, decagon -
symbol-size Størrelsen på symbolet Nummer, kan være relativ ("+4") 10
symbol-stroke-width omrisslinjebredde Bredde 1.0 hvis symbol-stroke-color er satt
symbol-stroke-color linjefarge Farge #FFC800 hvis symbol-stroke-width er satt
symbol-stroke-opacity linjegjennomsiktighet Gjennomsiktighet 1.0
symbol-fill-color fyllfarge for formen Farge blue, med mindre enten symbol-stroke-width eller symbol-stroke-color er satt
symbol-fill-opacity fyllgjennomsiktighet Gjennomsiktighet 1.0
text-..., font-... se generelle Tekst- og skriftstiler

Stol ikke på standardverdiene for symbol-...-egenskaper (unntatt for opacity). De er ment for "quick & dirty"-stilark og bør settes til en eksplisitt verdi.

Linjestiler

Nøkkel Beskrivelse Verdiformat Standardverdi
width Linjebredde Bredde -
color Linjefarge Farge verdi av fill-color eller\(hvis ikke satt) JOSMs standard \utaggfarge (#808080)
opacity Hvor gjennomsiktig linjen er. Gjennomsiktighet 1.0
dashes En matrise med vekslende på/av-lengder liste med tall, f.eks. \> 15, 5 \ \kan skrives som uttrykk: \ > list(3, 4, 5, 6) \ \eller nøkkelordet none \for å slå av strekmønster -
dashes-offset flytt strekmønsteret med en viss mengde Nummer (>= 0) 0
dashes-background-color Fargen som brukes mellom strekmønstrene (valgfri) Farge -
dashes-background-opacity Gjennomsiktighet for strekmønsterbakgrunnen Gjennomsiktighet verdi av opacity
linecap Formen på enden av linjen (se her) none, round, square none
linejoin Formen på linjehjørnene round, miter, bevel round
miterlimit Gjelder for linejoin: miter. \Setter maksimal overskytning når linjesegmenter møtes i en veldig liten vinkel Nummer (>= 1.0) 10.0
offset Flytt linjen til venstre eller høyre (når du ser i veiens retning). \Dette kan brukes til å tegne flere felt for én vei eller markere venstre og høyre side av en vei forskjellig. Nummer (positiv verdi flytter linjen til venstre,\negativ til høyre) 0
text-position sett til line, hvis tekst skal tegnes langs linjen line, center -
text-...,\font-... se generelle Tekst- og skriftstiler
repeat-image gjentatt bilde langs en linje (siden r5801) Bilde -
repeat-image-width Bredden på bildet (valgfri, se icon-width) (siden r5811) Nummer -
repeat-image-height Høyden på bildet (valgfri) (siden r5811) Nummer -
repeat-image-align Justering av bildet.\Topp-, bunnkant eller den (horisontale) midtlinjen av bildet vil være langs linjen (siden r5801) top, center, bottom center
repeat-image-offset Forskyvning fra linjen (siden r5801) Nummer 0
repeat-image-spacing Avstand mellom gjentatte bilder (siden r5801) Nummer 0
repeat-image-phase Innledende avstand i begynnelsen av linjen (siden r5812) Nummer 0
repeat-image-opacity Gjennomsiktighet av det gjentatte bildet (siden r16700) Nummer 1.0

Alle disse egenskapene (unntatt for text-... og font-...) finnes også med prefikset casing-. Kanten er et uavhengig linjeelement som tegnes under den normale linjen og kan brukes til å tegne en tynn ramme rundt linjen i en annen farge.

Nøkkel Beskrivelse Verdiformat Standardverdi
casing-width Bredden på kanten på begge sider av hovedlinjen. \I JOSM < 5214: Total bredde av kanten Bredde (reverserer til width hvis relativ bredde er spesifisert) -
casing-color Kantfarge Farge verdi av fill-color eller (hvis ikke satt) \JOSMs standard utaggfarge (#808080)
casing-opacity Hvor gjennomsiktig kanten er. Gjennomsiktighet 1.0
casing-... ... ... ...

I likhet med casing-, finnes det også prefikset left-casing- og right-casing-. Disse tegner ekstra linjer til venstre og høyre for hovedlinjen.

Områdestiler

Nøkkel Beskrivelse Verdiformat Standardverdi
fill-color Fargen som brukes til å fylle området. Frem til 11700 ble alfakomponenten satt til 50 for å skape en gjennomsiktighetseffekt. Farge -
fill-image Bilde-mønster Bilde -
fill-extent Sett denne egenskapen for å kunne tegne omrisset av området. Tallet angir hvor langt inn fra kanten av området det skal fylles mot sentrum. (Hvis ikke satt, vil hele området fylles) (siden r9008) Tall -
fill-extent-threshold Sett denne egenskapen for å tegne hele området når en gitt prosentandel dekning er nådd. Kan være større enn 100 % siden det dekket området estimeres som omkrets * utstrekning. Tall -
fill-opacity Hvor gjennomsiktig fyllingen er; gjelder både farge og bilde Gjennomsiktighet 0.2 (siden r11700, 1.0 før det)
(kan endres med mappaint.fillalpha og
mappaint.fill-image-alpha-innstillingene)
text-position sett til center hvis teksten skal tegnes i midten av området. Sett til inside for å plassere teksten helt innenfor området. (siden r11722) line, center, inside -
text-..., font-... se generelle tekst- og skrift-egenskaper

Påkrevde egenskaper for å lage en områdestil: fill-color eller fill-image

Tekst- og skrift-egenskaper

Nøkkel

Beskrivelse

Verdiformat

Standardverdi

text

Hvordan finne etikettteksten.
Ingen etikett vises med mindre denne instruksjonen er til stede.

auto

Hent teksten automatisk. Standard navnetagger er: "name:"+<SPRÅK>,
"name", "int_name", "ref", "operator", "brand" og "addr:housenumber".

Konfigurer en liste med taggnavn i innstillingen "mappaint.nameOrder" for å
endre denne listen. (Etter å ha endret listen, kreves en omstart av JOSM.)

Streng

Angir nøkkelen til taggen hvis verdi skal brukes som tekst.

Uttrykk

Du kan skrive inn et uttrykk for å beregne teksten som skal vises. Eksempler:

  • eval("dette er en statisk tekst") - viser en statisk tekst
  • eval(concat(tag("første"), "-", tag("andre"))) - viser
    de sammenkjedede taggene "første" og "andre"

""

For å slette en tidligere satt tekst.

-

text-color tekstfargen Farge hvit for linjer og noder,
#c0c0c0 for områder
(JOSM "text" og "areatext"
fargeinnstillinger)
text-opacity hvor gjennomsiktig teksten er Gjennomsiktighet 1.0
text-offset-x flytt teksten horisontalt,
(ikke støttet for tekst langs linje)
Tall 0
text-offset-y
(kan også skrives som
text-offset)
flytt teksten vertikalt, positive verdier flytter teksten oppover Tall 0
text-halo-radius størrelsen på tekstens bakgrunnskant
(for å gjøre teksten synlig på bakgrunn
med en lignende farge)
Tall -
text-halo-color fargen på tekstens halo Farge komplementær til tekstfargen
text-halo-opacity gjennomsiktighet for tekstens halo Gjennomsiktighet 1.0
text-anchor-horizontal horisontal plassering av tekstetikett venstre, sentrer, høyre høyre
text-anchor-vertical vertikal plassering av tekstetikett over, topp, sentrer, bunn, under bunn
text-rotation Roter teksten med eller mot klokken (negativ verdi)
(siden r16253)
[rad], [rad]rad, [grader]°, [grader]grader, [grad]grad, [sving]sving
(definisjon) eller en himmelretning (f.eks. nordøst eller sørvest);
eller way for å rotere teksten i retning av foreldreveien.
Se også funksjonene degree_to_radians, cardinal_to_radians.
Siden versjon 18678 er funksjonen parent_way_angle() et alternativ til way: f.eks. way > node[...]::layer_x { ... text-rotation: parent_way_angle(); ... }
(Merk at retningen angir hvor den øvre kanten av teksten peker.
Det betyr at med standard retning nord flyter teksten mot øst
(med et språk som leses fra venstre til høyre).
Så hvis du vil at den skal flyte mot f.eks. sør, må du sette øst.)
-
text-position se Områdestiler og Linjestiler
font-family skrifttype Streng "Droid Sans"
(JOSM-innstilling "mappaint.font")
font-size skriftstørrelse Tall 8
(JOSM-innstilling "mappaint.fontsize")
font-weight fet eller ikke fet, normal normal
font-style kursiv eller ikke kursiv, normal normal

Brukerdefinerte egenskaper

  • I Mappaint-stiler kan du definere egendefinerte egenskaper, f.eks.: crc: CRC32_checksum(tag(name))/429496.7296;
  • I Valideringsregler må de prefikses med en -, f.eks.: -osmoseItemClassLevel: "1210/1/1";

Forklaring av egenskapsverdier

Bredde

  • 14.0 (ethvert positivt tall)
  • standard (bruk JOSMs standard linjebredde, som er 2, men kan konfigureres)
  • tynnest (tegner linjen så tynn som mulig)
  • +3 (med pluss-tegn foran) legger til verdien til bredden på standardlaget. Dette gjelder bare for stiler som ikke er på standardlaget, f.eks. fremhevinger. En annen måte å skrive dette på er prop("width","default")+3. For casing-width refererer dette til width-verdien på samme lag.

Bilde

Se Help/Styles/Images.

Farge

  • navngitt farge som finnes i denne listen
  • html-stil: #RRGGBB, #RGB, #RRGGBBAA
  • rgb(/*r*/, /*g*/, /*b*/) - rgb-verdi med argumenter fra 0.0 til 1.0
  • rgba(/*r*/, /*g*/, /*b*/, /*alpha*/) - rgb-verdi med alfa
  • hsb_color(/*fargetoning*/, /*metning*/, /*lyshet*/) - farge fra HSB-fargerommet
  • hvis fargen er prefikset med et navn og #, f.eks. color: highway_track#6e541c;, vil den vises i Fargeinnstillinger og sluttbrukere kan justere fargen der selv

Gjennomsiktighet

  • fra 0.0 (gjennomsiktig) til 1.0 (ugjennomsiktig)

Streng

  • hvilken som helst tegnsekvens, i anførselstegn, f.eks. "images/fill.png". Hvis strengen er en identifikator, er anførselstegn valgfrie. (Anførselstegn og backslash kan escapes.)

Tall

  • heltall eller flyttall (i enkel form f.eks. 0.3). Generelt kan være negativt, men de fleste egenskaper støtter ikke negative tall
  • har en spesiell betydning hvis du setter et "+"-tegn foran (relativ bredde)

Eval-uttrykk

Se Javadoc for Functions for en oppdatert liste over funksjoner som støttes av JOSMs MapCSS-implementering.

+, -, *, /
aritmetiske operasjoner
||, &&, !
logiske operasjoner
<, >, <=, >=, ==, !=
sammenligningsoperatorer
asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (siden r17759), random, round, signum, sin, sinh, sqrt, tan, tanh
den vanlige betydningen, detaljer
cond(b, fst, snd)
b ? fst : snd
hvis (b) så fst ellers snd
list(a, b, ...)
lag en liste med verdier, f.eks. for dashes-egenskapen
get(lst, n)
hent det nte elementet i listen lst (telling starter på 0) [siden r5699]
split(sep, str)
deler strengen str ved forekomster av separatorstrengen sep, returnerer en liste [siden r5699]
prop(p_name)
verdien av egenskapen p_name på gjeldende lag, f.eks. prop("width")
prop(p_name, layer_name)
egenskap fra laget layer_name
is_prop_set(p_name)
sant, hvis egenskapen p_name er satt for gjeldende lag
is_prop_set(p_name, layer_name)
sant, hvis egenskapen p_name er satt for laget layer_name
tag(key_name)
hent verdien av nøkkelen key_name fra det aktuelle objektet
parent_tag(key_name)
hent verdien av nøkkelen key_name fra objektets forelder
parent_tags(key_name)
returnerer alle foreldrenes verdier for nøkkelen key_name som en liste sortert etter naturlig rekkefølge [siden r8775]
has_tag_key(key_name)
sant, hvis objektet har en tagg med den gitte nøkkelen
rgb(r, g, b)
lag en fargeverdi (argumenter fra 0.0 til 1.0)
hsb_color(h, s, b)
lag en farge fra fargetoning, metning og lyshet (argumenter fra 0.0 til 1.0) [siden r6899]
red(clr), green(clr), blue(clr)
hent verdien av fargekanalene i rgb-fargemodellen
alpha(clr)
hent alfaverdien til den gitte fargen [siden r6749]
length(str)
lengden av en streng
count(lst)
lengden av en liste, dvs. teller dens elementer [siden r7162]
length(lst)
lengden av en liste ([siden r5699] – foreldet siden r7162
any(obj1, obj2, ...)
returnerer det første objektet som ikke er null (tidligere coalesce, [siden r7164])
concat(str1, str2, ...)
sett sammen strengene til én
join(sep, str1, str2, ...)
sett sammen strenger, med sep som separator [siden r6737]
join_list(sep, list_name)
setter sammen elementene i listen list_name til én streng separert med separator sep [siden r8775]
upper(str)
konverterer streng til store bokstaver [siden r11756]
lower(str)
konverterer streng til små bokstaver [siden r11756]
title(str)
konverterer streng til tittelcase [siden r17613] ("jeg har DET BRA""Jeg Har Det Bra")
trim(str)
fjerner ledende og avsluttende mellomrom fra streng [siden r11756]
trim_list(list_name)
fjerner ledende og avsluttende mellomrom fra en liste med strenger, vil fjerne oppføringer som er tomme etterpå [siden r15591]
JOSM_search("...")
sant, hvis JOSM-søk gjelder for objektet
tr(str, arg0, arg1, ...)
oversett fra engelsk til gjeldende språk (kun for strenger i JOSM-brukergrensesnittet) [siden r6506]
regexp_test(regexp, string)
test om string samsvarer med mønsteret regexp [siden r5699]
regexp_test(regexp, string, flags)
test om string samsvarer med mønsteret regexp; flags er en streng som kan inneholde "i" (case insensitive), "m" (multilinje) og "s" ("dot all") [siden r5699]
regexp_match(regexp, string)
Prøver å matche string mot mønsteret regexp. Returnerer en liste med fangstgrupper ved suksess. Det første elementet (indeks 0) er den fullstendige matchen (dvs. string). Ytterligere elementer tilsvarer de bracketed delene av det regulære uttrykket. [siden r5701]
regexp_match(regexp, string, flags)
Prøver å matche string mot mønsteret regexp. Returnerer en liste med fangstgrupper ved suksess. Det første elementet (indeks 0) er den fullstendige matchen (dvs. string). Ytterligere elementer tilsvarer de bracketed delene av det regulære uttrykket. Flags er en streng som kan inneholde "i" (case insensitive), "m" (multilinje) og "s" ("dot all") [siden r5701]
substring(str, idx)
returner delstrengen av str, starter ved indeks idx (0-indeksert) [siden r6534]
substring(str, start, end)
returner delstrengen av str, starter ved indeks start (inkludert) opp til end (ekskludert) (0-indeksert) [siden r6534], en negativ sluttindeks teller fra slutten av strengen [siden r19259]
replace(string, old, new)
Erstatter alle forekomster av delstrengen old i strengen string med teksten new
osm_id()
returnerer OSM-id'en til det aktuelle objektet [siden r5699]
osm_user_name()
returnerer OSM-brukernavnet til den som sist rørte ved det aktuelle objektet [siden r15246]
osm_user_id()
returnerer OSM-bruker-id'en til den som sist rørte ved det aktuelle objektet [siden r15246]
osm_version()
returnerer OSM-versjonsnummeret til det aktuelle objektet [siden r15246]
osm_changeset_id()
returnerer id'en til endringssettet objektet sist ble lastet opp til [siden r15246]
osm_timestamp()
returnerer tidspunktet for siste endring av det aktuelle objektet, som tidsstempel [siden r15246]
parent_osm_id()
returnerer OSM-id'en til objektets forelder (samsvarer med barneselektor) [siden r13094]
URL_encode(str)
prosentkoder en streng. Kan være nyttig for data-URLer [siden r6805]
URL_decode(str)
prosentdekoder en streng. [siden r11756]
XML_encode(str)
escape spesialtegn i xml. F.eks. < blir &lt;, andre spesialtegn: >, ", ', &, \n, \t og \r [siden r6809]
CRC32_checksum(str)
beregn CRC32-sjekksummen til en streng (resultatet er et heltall fra 0 til 232-1) [siden r6908]
siunit_length(str)
konverter lengdeenheter til meter (feiltolerant, ignorerer mellomrom) [siden r19089]
is_right_hand_traffic()
Sjekk om det er venstre- eller høyrehandstrafikk på gjeldende sted. [siden r7193]
number_of_tags()
returnerer antall tagger for det aktuelle OSM-objektet [siden r7237]
print(o)
skriver ut en strengrepresentasjon av o til kommandolinjen (for feilsøking) [siden r7237]
println(o)
skriver ut en strengrepresentasjon av o til kommandolinjen, etterfulgt av en ny linje (for feilsøking) [siden r7237]
JOSM_pref(key, default)
Hent verdi fra JOSMs avanserte innstillinger. På denne måten kan du tilby visse alternativer til brukeren og gjøre stilen tilpassbar. Fungerer med strenger, tall, farger og boolske verdier.
[Denne funksjonen finnes siden versjon r3856, men med noen begrensninger. JOSM_pref returnerer alltid en streng, men i versjon r7237 og tidligere fungerte ikke automatisk konvertering av streng til boolsk verdi og farge. Du kan bruke følgende løsninger for boolske verdier og farge i versjon r7237 og tidligere: cond(JOSM_pref("myprefkey", "true")="true", "X", "O") og html2color(JOSM_pref("mycolor", "#FF345611")). Disse eksplisitte konverteringene bør ikke lenger være nødvendige i versjon r7238 og senere. Automatisk konvertering til et tall fungerer i alle versjoner. Videre, i versjon r16590, kan den brukes til å sette fargeegenskaper. Så * { set_color: JOSM_pref("pref", #000000); } vil nå lage en fargeegenskap.]
setting()
for å bruke en stilinnstilling [siden r7450]
degree_to_radians()
returnerer en i grader gitt retning i radianer [siden r8260]
cardinal_to_radians()
returnerer en himmelretning i radianer [siden r8260]
waylength()
returnerer lengden på veien i meter [siden r8253]
areasize()
returnerer arealet til en lukket vei i kvadratmeter [siden r8253]
at(lat,lon)
returnerer sant hvis objektets sentroid ligger på de gitte lat/lon-koordinatene, f.eks. for å sjekke om noder er på "null-øya" node[at(0.0,0.0)] [siden r12514]
is_similar(str1, str2)
returnerer sant hvis de to strengene er like, men ikke identiske, dvs. har en Levenshtein-avstand på 1 eller 2. Eksempel: way[highway][name][is_similar(tag(name), "Hovedgaten")] sjekker for gater med en mulig skrivefeil i navnet (f.eks. Hovedgata). [siden r14371]
gpx_distance()
returnerer den laveste avstanden mellom OSM-objektet og et GPX-punkt [siden r14802]
count_roles()
returnerer antall primitiver i en relasjon med de angitte rollene [siden r15275]
sort(str1, str2, str3, ...)
sorterer en array med strenger [siden r15279]
sort_list(list_name)
sorterer en liste med strenger [siden r15279]
tag_regex(regex)
returnerer en liste som inneholder verdiene til nøkler som samsvarer med regex [siden r15317]
to_boolean(str)
returnerer strengargumentet som en boolsk verdi [siden r16110]
to_byte(str)
returnerer strengargumentet som en byte [siden r16110]
to_short(str)
returnerer strengargumentet som en short [siden r16110]
to_int(str)
returnerer strengargumentet som en int [siden r16110]
to_long(str)
returnerer strengargumentet som en long [siden r16110]
to_float(str)
returnerer strengargumentet som en float [siden r16110]
to_double(str)
returnerer strengargumentet som en double [siden r16110]
uniq(str1, str2, str3, ...)
returnerer en liste med strenger som kun har unike verdier fra en array med strenger [siden r15323]
uniq_list(list_name)
returnerer en liste med strenger som kun har unike verdier fra en liste med strenger [siden r15323]
parent_way_angle()
returnerer vinkelen til foreldreveien som en double i radianer [siden r18664] (se: text-rotation eller icon-rotation)
convert_primitive_to_string(PrimitiveId)
returnerer primitiv-id'en som en streng [siden r18829]
convert_primitives_to_string(PrimitiveId, PrimitiveId, ...)
returnerer en liste med primitiv-id'er konvertert til strenger [siden r18829]
parent_osm_primitives(valgfri nøkkel, valgfri verdi)
returnerer en liste med primitiv-id'er som samsvarer med nøkkelen og verdien (hvis til stede) [siden r18829]

Eksempler

  • sirkelsymbol for husnummer med størrelse avhengig av antall sifre
    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; 
    }
    
  • inverter farger
    *::* {
        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))));
    }
    
  • tilfeldige ting
    way {
        width: eval(random() * 20);
        color: eval(rgb(random(), random(), random()));
    }
    
  • regexp-matcheksempel: endre "nameXXXsubname" til "name::subname"
    *[name=~/.+XXX.+/] 
    {
        _match: regexp_match("(.+?)XXX(.+)", tag("name"));
        text: concat(get(prop("_match"),1), "::", get(prop("_match"),2));
    }
    
  • mal bygninger i forskjellige farger i henhold til gate i adressetaggene
    area[building][addr:street] {
        fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7);
        fill-opacity: 0.8;
    }
    
  • kapping på innsiden av område
    area[building]:clockwise {
        right-casing-width: 10;
    }
    area[building]:anticlockwise {
        left-casing-width: 10;
    }
    /* eller */
    area[building][is_clockwise()] {
        right-casing-width: 10;
    }
    area[building][is_anticlockwise()] {
        left-casing-width: 10;
    }
    
  • case-insensitive selektor. Dette samsvarer med: Name=Main Street, men også naMe=MAIN STREET
    way[/(?i)^name$/ =~ /(?i)^Main Street$/] {
    }
    

Kompatibilitetsnotater

MapCSS 0.2

Grammatikk

  • way[oneway=yes] har ingen magi, du kan bruke way[oneway?] i stedet
  • ingen @import
  • JOSM krever ikke at eval(...) skal pakkes rundt uttrykk, men for kompatibilitet med andre MapCSS-implementeringer bør du skrive det ut.

Egenskaper

For øyeblikket støtter JOSM ikke følgende egenskaper:

linje:
image
etikett:
font-variant, text-decoration, text-transform, max-width
skjold:
ikke støttet

Halcyon (Potlatch 2)

  • Tekstetikett plasseres i midten av ikonet. For kompatibilitet med Halcyon, legg til
    node { text-anchor-vertical: center; text-anchor-horizontal: center; }
    
    i begynnelsen av stilarket ditt.
  • standard z-index i Halcyon er 5, men det er 0 i JOSM
  • image: circle; tilsvarer symbol-shape: circle;

Kothic

  • Kothic har støtte for eval, som sannsynligvis avviker fra JOSMs eval.
  • Kothic forstår enheter, mens JOSM alltid beregner i piksler.
  • Ekstruderingsfunksjonene er ikke tilgjengelige i JOSM.

Ceyx

  • ser ut til å ha [tunnel=1] i stedet for [tunnel=yes] (Halcyon) eller [tunnel?] (JOSM)

Media queries (foreldet)

Merk: media queries er foreldet. Du bør bruke @supports-regler i stedet (se ovenfor).

Media queries brukes til å hoppe over en del av stilen under visse forhold. Typisk vil du bruke en funksjon som er introdusert i en nyere versjon av JOSM, men ha en fallback-stil for brukere av eldre JOSM-klienter. Denne funksjonen kom med r6970. Eksempel:

@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 */
    /* ... */
}

Syntaksen matcher nøye den offisielle css-syntaksen. Følgende forhold støttes:

Medietilstand

Beskrivelse

(min-josm-version: <tall>)

Inkluder bare @media-delen når den gjeldende JOSM-versjonen er større enn eller lik det angitte tallet.

(max-josm-version: <tall>)

Inkluder bare @media-delen når den gjeldende JOSM-versjonen er mindre enn eller lik det angitte tallet.

(user-agent: <streng>)

Inkluder bare @media-delen når navnet på editoren / rendereren samsvarer med den gitte strengen. I JOSM er den eneste aksepterte verdien josm.

Forhold kan kombineres med and:

@media (min-josm-version: 6970) and (max-josm-version: 7014) {
 /* bare for JOSM-versjoner 6970 til 7014 */
}

Flere kombinerte forhold kan lenkes sammen med et komma (logisk eller):

@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) {
  /* for JOSM-versjon 6970 til 7014 og for editoren kalt "myEditor" */
}

Siden media queries bare støttes i JOSM 6970 og senere, bør du også spesifisere dette som minimum JOSM-versjon i meta-selektoren:

meta {
    min-josm-version: "6970"; /* Denne stilen bruker media queries */
    /* ... */
}
Last modified 2 months ago Last modified on 2025-03-15T10:12:36+01:00
Note: See TracWiki for help on using the wiki.