Innholdsfortegnelse
MapCSS Implementering
JOSMs implementering av MapCSS brukes for følgende funksjoner:
- Kartmalingsstiler
- Valideringsregler, se MapCSS tagg-sjekker for den spesielle delen som kun gjelder regler.
- Søkedialog
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:
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)
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 |
---|---|---|---|
|
Hvordan finne etikettteksten. |
Streng
Uttrykk
| - |
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
. Forcasing-width
refererer dette tilwidth
-verdien på samme lag.
Bilde
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.0rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)
- rgb-verdi med alfahsb_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<
, 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")
oghtml2color(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 brukeway[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
i begynnelsen av stilarket ditt.
node { text-anchor-vertical: center; text-anchor-horizontal: center; }
- standard z-index i Halcyon er 5, men det er 0 i JOSM
image: circle;
tilsvarersymbol-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 |
(max-josm-version: <tall>) |
Inkluder bare |
(user-agent: <streng>) |
Inkluder bare |
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 */ /* ... */ }