Changes between Initial Version and Version 1 of Nl:Help/Styles/MapCSSImplementation


Ignore:
Timestamp:
2016-02-16T17:50:22+01:00 (10 years ago)
Author:
DiGro
Comment:

translated into Dutch

Legend:

Unmodified
Added
Removed
Modified
  • Nl:Help/Styles/MapCSSImplementation

    v1 v1  
     1[[TranslatedPages(revision=106)]]
     2[[PageOutline(1-10,Inhoud)]]
     3Deze pagina documenteert details over implementatie van [osmwiki:MapCSS/0.2 MapCSS] in JOSM.
     4
     5== Algemene structuur ==
     6Een MapCSS-stijl heeft regels in de vorm van
     7{{{
     8#!css
     9selector {
     10    prop: value;
     11    /* ... */
     12    prop: value;
     13    /* and/or */
     14    set: class;
     15    set: .class;
     16}
     17}}}
     18Het algoritme om de stijlen voor een bepaald object te zoeken ziet er uit als dit:
     19{{{
     20 - voor elke regel:
     21     als de selector van toepassing is, stel de eigenschappen in vanuit het blok { }
     22 - analyseer de uiteindelijk lijst met eigenschappen en genereer daar stijlen uit
     23}}}
     24
     25MapCSS gebruikt de indeling '''comment''' van CSS (`/* ... */`). Onthoud dat bij het niet uitvoerbaar maken van grote delen van een MapCSS-bestand, sommige constructies een onverwacht einde van het niet uitvoerbaar maken kunnen veroorzaken, bijvoorbeeld:
     26{{{
     27#!css
     28/*
     29*[highway][name =~ /^R(\.|:)? .*/] { /* het einde van de reguliere expressie definieert het onverwachte einde van het niet uitvoerbaar maken */
     30        throwWarning: tr("foo");
     31}
     32*/
     33}}}
     34
     35== Selectoren ==
     36''Selectoren'' omvatten de filterexpressies van een MapCSS-regel. De regel wordt alleen toegepast op een object op de kaart, als de selector ervan overeenkomt
     37met het object.
     38
     39Selectoren in MapCSS zijn anders dan voor standaard CSS voor het web. MapCSS ondersteunt alleen een subset van de standaard CSS-selectoren, maar
     40breidt ze uit met aanvullende selectoren die zijn vereist voor gegevens van OSM.
     41
     42Enkele basisvoorbeelden:
     43{{{
     44#!css
     45/* toegepast op wegen met een tag highway=residential */
     46way[highway=residential] {  /*  de stijlen */}
     47
     48/* toegepast op nieuwe, gesloten wegen op laag 1, indien die de tags amenity=parking en access=public hebben, en indien
     49 * dat het zoomniveau tussen 11 en 14 ligt
     50 */
     51way|z11-14[amenity=parking][access=public]:closed:new::layer_1 {...}
     52
     53
     54area[amenity=parking][access=public], area[amenity=parking][!access] {...}
     55relation[type=route][route=foot] > way::relation_underlay {..}
     56}}}
     57
     58
     59De verschillende elementen ('''type'''-, '''zoom'''- , '''condition''' selector, '''pseudo classes''', '''layer identifier''', '''grouping''' en '''child combinator''') worden hieronder uitgelegd.
     60
     61
     62=== Type selector ===
     63
     64{{{#!th align=left valign=top
     65'''Selector'''
     66}}}
     67{{{#!th align=left valign=top
     68'''Beschrijving'''
     69}}}
     70|-------------------------------------------------------------------------------
     71{{{#!td align=left  valign=top
     72*
     73}}}
     74{{{#!td align=left  valign=top   
     75Komt overeen met elk object
     76}}}
     77|-------------------------------------------------------------------------------
     78{{{#!td align=left  valign=top
     79{{{node}}}, {{{way}}}, {{{relation}}}
     80}}}
     81{{{#!td align=left  valign=top   
     82Komt overeen met objecten van OSM van het opgegeven type.
     83}}}
     84|-------------------------------------------------------------------------------
     85{{{#!td align=left  valign=top
     86{{{area}}}
     87}}}
     88{{{#!td align=left  valign=top   
     89Komt overeen met elk gebied, ongeacht of de grens van het gebied slechts is gemodelleerd met één enkele weg of met een set wegen die zijn samengevoegd in een relatie.
     90{{{
     91#!css
     92area[natural=beach] {...}
     93/* ... is gelijk aan ... */
     94way[natural=beach], relation[type=multipolygon][natural=beach] {...}
     95}}}
     96Onthoud dat {{{area}}} oook niet gesloten wegen selecteert, dus kan het nuttig zijn de pseudoklasse {{{:closed}}} toe te voegen. De Validatie van JOSM zal een waarschuwing geven voor niet gesloten wegen die een stijl voor een gebied hebben.
     97}}}
     98|-------------------------------------------------------------------------------
     99{{{#!td align=left  valign=top
     100{{{meta}}}
     101}}}
     102{{{#!td align=left  valign=top   
     103De selector {{{meta}}} start een speciale regel die aan het begin van het bestand zou moeten staan. Het geeft soms algemene informatie over het stijlblad. Alle software die MapCSS ondersteunt zou in staat moeten zijn om deze gedeelten zonder fouten te parsen, gebruik dus geen exotische syntaxis extensies in dit gedeelte.
     104{{{
     105#!css
     106meta {
     107    title: "Parking lanes";   /* titel weergegeven in het menu */
     108    icon: "images/logo.png";  /* klein pictogram, weergegeven in het menu naast de titel */
     109    version: "1.2";           /* de versie van de stijl */
     110    description: "...";       /* een of twee zinnen die de stijl beschrijven */
     111    author: "...";            /* de auteur(s) van de stijl */
     112    link: "http://...";       /* URL naar de webpagina van de stijl */
     113    min-josm-version: 6789;   /* de minimale versie van JOSM waarin deze stijl werkt */
     114}
     115}}}
     116}}}
     117|-------------------------------------------------------------------------------
     118{{{#!td align=left  valign=top
     119{{{canvas}}}
     120}}}
     121{{{#!td align=left  valign=top   
     122Enige stijlinformatie niet specifiek voor knopen, wegen of relaties.
     123{{{
     124#!css
     125canvas {
     126    fill-color: #ffffea; /* de eerdere achtergrondkleur is vervallen sinds r7110 */
     127    default-points: false;
     128    default-lines: false;
     129}
     130}}}
     131{{{#!th
     132'''Sleutel'''
     133}}}
     134{{{#!th
     135'''Beschrijving'''
     136}}}
     137{{{#!th
     138'''Indeling waarde'''
     139}}}
     140{{{#!th
     141'''Standaard waarde'''
     142}}}
     143|-
     144{{{#!td
     145{{{fill-color}}}
     146}}}
     147{{{#!td
     148Specificeert de overal gebruikte vul-/achtergrondkleur (`background-color` is vervallen sinds r7110).
     149}}}
     150{{{#!td
     151''Kleur''
     152}}}
     153{{{#!td align=center
     154{{{black}}}
     155}}}
     156|-
     157{{{#!td
     158{{{default-points}}}
     159}}}
     160{{{#!td
     161Of de standaard puntstijl zou moeten worden toegepast op knopen waar geen stijl op van toepassing is.
     162}}}
     163{{{#!td
     164''Boolean''
     165}}}
     166{{{#!td align=center
     167{{{true}}}
     168}}}
     169|-
     170{{{#!td
     171{{{default-lines}}}
     172}}}
     173{{{#!td
     174Of de standaard lijnstijl zou moeten worden toegepast op wegen waar geen stijl voor van toepassing is.
     175}}}
     176{{{#!td
     177''Boolean''
     178}}}
     179{{{#!td align=center
     180{{{true}}}
     181}}}
     182}}}
     183
     184=== Kind-selector ===
     185Indien een knoop deel is van een weg, zeggen we dat het een ''kind'' is van die weg. Soortgelijk: als een knoop, een weg, of een relatie kid is
     186van een relatie, zeggen we dat het een ''kind'' is van die relatie.
     187
     188In MapCSS kunt u een '''kind selector''' gebruiken die alleen overeenkomt als zowel het ouder- als het kind-object overeenkomen.
     189
     190Voorbeeld:
     191{{{
     192#!css
     193/*
     194 * komt alleen overeen voor een weg die een kind is van een relatie met de tags
     195 * type=route en route=foot
     196 */
     197relation[type=route][route=foot] > way {...}
     198}}}
     199
     200Opmerkingen:
     201* Zoomselector en Laagidentificatie zijn alleen relevant voor het gedeelte aan de rechterzijde van het teken >.
     202* De functies ''prop()'' en ''is_prop_set()'' worden alleen ondersteund aan de rechterkant van het teken >.
     203* De functie ''parent_tag'' en ''parent_tags'' (zie hieronder) kunnen worden gebruikt om toegang te krijgen tot de tags vanuit de ouder(s).
     204* Voor compatibiliteit met de standaard MapCSS 0.2 wordt `relation[type=route][route=foot] way {/*...*/}`, zonder het teken groter dan `>` ook ondersteund. However, no [[#Linkselector]] may be specified in this case.
     205
     206
     207=== Ouder-selector ===
     208In aanvulling op kind-selector ondersteunt JOSM ook de notie van een '''ouder-selector'''. Onthoud dat ouder-selectoren een
     209JOSM-specifieke uitbreiding zijn van MapCSS en niet aanwezig zijn in andere implementaties van MapCSS.
     210
     211gelijk aan een kind-selector, komt een ouder-selector alleen overeen als zowel de ouder- als het kindobject overeenkomen. In tegenstelling tot
     212de kind-selector, wordt het teken < gebruikt.
     213
     214In tegenstelling tot de kind-selector, zal het ouder-object worden "geselecteerd". Met andere woorden, de eigenschappen in het declaratieblok {{{{...}}}} zijn van toepassing op het object aan de rechterkant van het teken "<".
     215
     216Voorbeeld:
     217{{{
     218#!css
     219/*
     220 * komt overeen met een highway waarvan tenminste één knoop is getagd als traffic_calming=*
     221 */
     222node[traffic_calming] < way[highway] {...}
     223}}}
     224
     225=== Voorwaarde-selector ===
     226Selectoren kunnen een set voorwaarden bevatten. Als één van deze voorwaarden evalueert naar 'false', komt de selector niet overeen en wordt de
     227stijlregel niet toegepast.
     228
     229Een '''attribuut voorwaarde''' specificeert een voorwaarde op een tag van een object van OSM.
     230
     231[=#condition_selector_operators]
     232{{{#!th align=left valign=top
     233'''Operator'''
     234}}}
     235{{{#!th align=left valign=top
     236'''Beschrijving'''
     237}}}
     238{{{#!th align=left valign=top
     239'''Voorbeeld'''
     240}}}
     241|-------------------------------------------------------------------------------
     242{{{#!td align=left  valign=top
     243`=`
     244}}}
     245{{{#!td align=left  valign=top   
     246Exacte overeenkomst van de waarde.
     247}}}
     248{{{#!td align=left  valign=top   
     249{{{
     250#!css
     251way[highway=residential]                   /* zonder aanhalingstekens altijd niet hoofdlettergevoelig */
     252node[name="Mijn naam"]                     /* aanhalingstekens gebruiken voor als de waarde spaties bevat of als overeenkomen van hoofdletters belangrijk is */
     253node["MY_Special_TAG"="een andere waarde"] /* aanhalingstekens gebruiken voor namen van tags als overeenkomen van hoofdletters vereist is */
     254node["ÖPVN"=tram]                          /* aanhalingstekens gebruiken voor sleutels van tags met speciale tekens */
     255                                           /*   onthoud dat deze niet algemeen voorkomend zijn in OSM op dit moment */
     256}}}
     257}}}
     258|-------------------------------------------------------------------------------
     259{{{#!td align=left  valign=top
     260`!=`
     261}}}
     262{{{#!td align=left  valign=top   
     263Waarde is niet gelijk aan
     264}}}
     265{{{#!td align=left  valign=top   
     266{{{
     267#!css
     268way[highway!=residential]                   /* zonder aanhalingstekens altijd niet hoofdlettergevoelig */
     269node[name!="Mijn naam"]                     /* aanhalingstekens gebruiken voor als de waarde spaties bevat of als overeenkomen van hoofdletters belangrijk is */
     270node["MY_Special_TAG"!="en andere waarde"]  /* aanhalingstekens gebruiken voor namen van tags als overeenkomen van hoofdletters vereist is */
     271node["name:fr"!="mon nome"]                 /* aanhalingstekens gebruiken voor sleutels van tags met speciale tekens, zoals dubbele punten */
     272}}}
     273}}}
     274|-------------------------------------------------------------------------------
     275{{{#!td align=left  valign=top
     276`<`, `>`, `<=`, `>=`
     277}}}
     278{{{#!td align=left  valign=top   
     279Vergelijking op numerieke waarden.
     280
     281}}}
     282{{{#!td align=left  valign=top   
     283{{{
     284#!css
     285node[population > 50000]                    /* zonder aanhalingstekens altijd niet hoofdlettergevoelig */
     286node[ele <= 3000]                           /* aanhalingstekens gebruiken voor als de waarde spaties bevat of als overeenkomen van hoofdletters belangrijk is */
     287}}}
     288}}}
     289|-------------------------------------------------------------------------------
     290{{{#!td align=left  valign=top
     291{{{^=}}}
     292}}}
     293{{{#!td align=left  valign=top   
     294Overeenkomst voorvoegsel
     295}}}
     296{{{#!td align=left  valign=top   
     297{{{
     298#!css
     299node[name ^= "mijnvoorvoegsel"]             /* waarde begint met 'mijnvoorvoegsel' */
     300}}}
     301}}}
     302|-------------------------------------------------------------------------------
     303{{{#!td align=left  valign=top
     304`$=`
     305}}}
     306{{{#!td align=left  valign=top   
     307Overeenkomst achtervoegsel
     308}}}
     309{{{#!td align=left  valign=top   
     310{{{
     311#!css
     312node[name $= "mijnachtervoegsel"]           /* waarde eindigt op 'mijnachtervoegsel' */
     313}}}
     314}}}
     315|-----------------------------------------------
     316{{{#!td align=left  valign=top
     317`*=`
     318}}}
     319{{{#!td align=left  valign=top   
     320Overeenkomst subtekenreeks
     321}}}
     322{{{#!td align=left  valign=top   
     323{{{
     324#!css
     325node[name *= "mijn subtekenreeks"]          /* waarde bevat de subtekenreeks 'mijn subtekenreeks' */
     326}}}
     327}}}
     328|-------------------------------------------------------------------------------
     329{{{#!td align=left  valign=top
     330`~=`
     331}}}
     332{{{#!td align=left  valign=top   
     333Lijst leden
     334}}}
     335{{{#!td align=left  valign=top   
     336{{{
     337#!css
     338*[vending~=stamps]                          /* de waarde van de tag voor de tag 'vending' bestaat uite een lijst met ;-gescheiden waarden    */
     339                                            /* en één van deze waarden is 'stamps'                                             */
     340}}}
     341}}}
     342|-------------------------------------------------------------------------------
     343{{{#!td align=left  valign=top
     344`=~`
     345}}}
     346{{{#!td align=left  valign=top   
     347Overeenkomst [http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum Reguliere expressie]
     348
     349}}}
     350{{{#!td align=left  valign=top   
     351{{{
     352#!css
     353name[name=~/^Mijn_patroon.*/]               /* de waarde van de tag 'name' komt overeen met de reguliere expressie '^Mijn_patroon.*' */
     354                                            /* Onthoud dat requliere expressies moeten zijn omsloten door /.../                     */                 
     355}}}
     356Hoofdlettergevoelige overeenkomsten kunnen worden bereikt via de ingebedde vlag expressie `(?i)` (zie [http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#CASE_INSENSITIVE Pattern.CASE_INSENSITIVE]).
     357}}}
     358|-------------------------------------------------------------------------------
     359{{{#!td align=left  valign=top
     360`!~` (sinds r6455)
     361}}}
     362{{{#!td align=left  valign=top   
     363Ontkennende [http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum Reguliere expressie] overeenkomst
     364
     365}}}
     366{{{#!td align=left  valign=top   
     367{{{
     368#!css
     369*[surface!~/paved|unpaved/]
     370}}}
     371}}}
     372|-------------------------------------------------------------------------------
     373{{{#!td align=left  valign=top
     374`∈` ([http://www.fileformat.info/info/unicode/char/2208/index.htm U+2208], sinds r6609)
     375}}}
     376{{{#!td align=left  valign=top   
     377element van
     378
     379}}}
     380{{{#!td align=left  valign=top   
     381{{{
     382#!css
     383node[amenity=parking] ∈ *[amenity=parking] {
     384  throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking");
     385}
     386}}}
     387}}}
     388|-------------------------------------------------------------------------------
     389{{{#!td align=left  valign=top
     390`⧉` ([http://www.fileformat.info/info/unicode/char/29c9/index.htm U+29C9], sinds r6613)
     391}}}
     392{{{#!td align=left  valign=top   
     393crossing
     394
     395}}}
     396{{{#!td align=left  valign=top   
     397{{{
     398#!css
     399area:closed:areaStyle ⧉ area:closed:areaStyle {
     400  throwOther: tr("Overlapping Areas");
     401}
     402}}}
     403}}}
     404
     405Sinds r6554 is het mogelijk de waarde "value" te laten voorafgaan door iets (d.i. expressie na de operator) met een `*` om die daar niet naar te "verwijzen" (d.i. te zorgen dat het wordt beschouwd als een andere sleutel en daar de waarde van te verkrijgen). Dus, `[key1 = *key2]` vergelijkt de waarde van `key1` met de waarde van `key2`, en `[key =~ */pattern/]` beschouwt de waarde van het `pattern` van de sleutel als een reguliere expressie en vergelijkt die met de waarde van `key`.
     406
     407In aanvulling daarop kunt u testen of een tag aanwezig is of niet:
     408
     409{{{#!th align=left valign=top
     410'''Voorwaarde'''
     411}}}
     412{{{#!th align=left valign=top
     413'''Voorbeeld'''
     414}}}
     415|-------------------------------------------------------------------------------
     416{{{#!td align=left  valign=top
     417Aanwezigheid van de tag
     418}}}
     419{{{#!td align=left  valign=top   
     420{{{
     421#!css
     422way[highway]                     /* komt overeen met elke weg met een tag 'highway'                                   */
     423way["VALSOU"]                    /* aanhalingstekens gebruiken als overeenkomen van hoofdletters vereist is           */
     424way["name:fr"]                   /* aanhalingstekens gebruiken als naam van de tag speciale tekens bevat (witruimte, dubbele punten, etc.) */
     425}}}
     426}}}
     427|-------------------------------------------------------------------------------
     428{{{#!td align=left  valign=top
     429Afwezigheid van de tag
     430}}}
     431{{{#!td align=left  valign=top   
     432{{{
     433#!css
     434way[!highway]                     /* komt overeen met elke weg die geen tag 'highway' heeft                            */
     435way[!"VALSOU"]                    /* aanhalingstekens gebruiken als overeenkomen van hoofdletters vereist is           */
     436way[!"name:fr"]                   /* aanhalingstekens gebruiken als naam van de tag speciale tekens bevat (witruimte, dubbele punten, etc.) */
     437}}}
     438}}}
     439|-------------------------------------------------------------------------------
     440{{{#!td align=left  valign=top
     441Aanwezigheid van tag door overeenkomst [http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum Reguliere expressie] (sinds r6547)
     442}}}
     443{{{#!td align=left  valign=top   
     444{{{
     445#!css
     446way[/^addr:/]                     /* komt overeen met elke sleutel `addr:*` */
     447}}}
     448}}}
     449|-------------------------------------------------------------------------------
     450{{{#!td align=left  valign=top
     451Afwezigheid van tag door overeenkomst Reguliere expressie
     452}}}
     453{{{#!td align=left  valign=top   
     454{{{
     455#!css
     456way[!/^addr:/]                    /* komt overeen met elke weg die geen tag 'addr:*' heeft */
     457}}}
     458}}}
     459
     460U kunt testen of de waarde van een tag een logische waarde 'waar'is. De waarde evalueert naar 'waar', als het of
     461"yes", "true", of "1" is. Alle andere waarden evalueren naar 'onwaar'.
     462
     463{{{#!th align=left valign=top
     464'''Voorwaarde'''
     465}}}
     466{{{#!th align=left valign=top
     467'''Voorbeeld'''
     468}}}
     469|-------------------------------------------------------------------------------
     470{{{#!td align=left  valign=top
     471Testen op waarde 'waar'
     472}}}
     473{{{#!td align=left  valign=top   
     474{{{
     475#!css
     476way[oneway?]                  /* komt overeen met elke weg die een waarde 'waar' heeft voor de tag 'oneway'  */
     477}}}
     478}}}
     479|-------------------------------------------------------------------------------
     480{{{#!td align=left  valign=top
     481Testen op waarde 'onwaar' (sinds r6513)
     482}}}
     483{{{#!td align=left  valign=top   
     484{{{
     485#!css
     486way[oneway?!]                  /* komt overeen met elke weg die een waarde 'onwaar' heeft voor de tag 'oneway'  */
     487}}}
     488}}}
     489
     490=== Link-selector ===
     491In een kind-selector kunt u voorwaarden formuleren in de koppeling tussen een ouder- en kind-object.
     492
     493Als de ouder een relatie is, kunt u voorwaarden formuleren voor de ''role'' dat een lid-object in deze relatie heeft.
     494{{{
     495#!css
     496relation[type=route] >[role="link"] way {  /* komt overeen met elke weg die lid is van een relatie voor een route met de rol 'link' */
     497   color: blue;
     498}
     499}}}
     500
     501{{{#!th align=left valign=top
     502'''Operator'''
     503}}}
     504{{{#!th align=left valign=top
     505'''Beschrijving'''
     506}}}
     507{{{#!th align=left valign=top
     508'''Voorbeeld'''
     509}}}
     510|-------------------------------------------------------------------------------
     511{{{#!td align=left  valign=top
     512`=`
     513}}}
     514{{{#!td align=left  valign=top   
     515Exacte overeenkomst van de naam van de rol. De naam van de {{{role}}} is verplicht in deze context.
     516}}}
     517{{{#!td align=left  valign=top   
     518{{{
     519#!css
     520relation >[role=residential] way           /* zonder aanhalingstekens altijd niet gevoelig voor hoofdletters */
     521relation >[role="Mijn naam"]   way           /* aanhalingstekens gebruiken als de waarde van de rol spaties bevat of als overeenkomen van hoofdletters belangrijk is */
     522}}}
     523}}}
     524
     525De operatoren {{{!=, ^=, $=, *=, en ~=}}} worden ook ondersteund. Bekijk [#condition_selector_operators voorwaarden operatoren selector].
     526
     527Knopen in wegen en leden in relaties zijn gesorteerd. U kunt voorwaarden formuleren voor de position van een knoop in een weg of een lid-
     528object in een relatie. Positieve getallen tellen vanaf het eerste tot en met het laatste element, negatieve getallen (sinds r8206) tellen van het laatste tot en met het eerste element.
     529
     530{{{
     531#!css
     532relation[type=route] >[index=1] way {  /* komt overeen met de eerste weg die een lid is van de relatie van de route  */
     533   color: blue;
     534}
     535
     536way >[index=-1] node {  /* komt overeen met de laatste knoop van een weg  */
     537   symbol-stroke-color: green;
     538}
     539
     540way!:closed >[index=1] node!:connection,
     541way!:closed >[index=-1] node!:connection {  /* komt overeen met alle eindknopen van enkele wegen */
     542   symbol-stroke-color: green;
     543}
     544}}}
     545
     546
     547=== Zoom-selector ===
     548U kunt een type selector decoreren met een '''zoom-selector'''. De zoom-selector beperkt het bereik aan zoomniveaus
     549waarop de respectievelijke regel voor MapCSS wordt toegepast.
     550
     551{{{#!th align=left valign=top
     552'''Voorbeeld'''
     553}}}
     554{{{#!th align=left valign=top
     555'''Beschrijving'''
     556}}}
     557|-------------------------------------------------------------------------------
     558|| {{{way|z12 {...} }}} || Op zoomniveau 12 ||
     559|| {{{way|z13-15 {...} }}} || Van 13 tot en met 15 ||
     560|| {{{way|z16- {...} }}} || 16 en hoger ||
     561|| {{{way|z-12 {...} }}} || 12 en lager ||
     562|| {{{way {...} }}} || elk zoomniveau ||
     563
     564De precieze definitie van schaalbereiken voor elk zoomniveau kan in de toekomst wijzigen. Als vuistregel kunt u verwachten dat u ongeveer op zoomniveau ''n'' bent als afbeeldingen tegels van slippymap weergeven van het niveau ''n''.
     565
     566
     567=== Pseudoklassen ===
     568Zie [https://josm.openstreetmap.de/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Condition.PseudoClasses.html Javadoc] voor de up-to-date lijst van pseudoklassen die worden ondersteund door JOSM's MapCSS-implementatie.
     569
     570|| {{{:closed}}} || waar voor wegen waar de erste knoop hetzelfde is als de laatste en voor elke relatie van een multipolygoon ||
     571|| {{{:new}}} || alle nieuw objecten ||
     572|| {{{:connection}}} || waar voor knopen die worden gebruikt voor meer dan één weg ||
     573|| {{{:unconnected}}} || waar voor knopen die niet worden gebruikt door een weg (sinds r6687) ||
     574|| {{{:tagged}}} || Wat JOSM beschouwd als zijnde getagd, d.i. een object met een tag sleutel, anders dan de volgende: {{{source*, source_ref, note, comment, converted_by, created_by, watch*, fixme, FIXME, description, attribution}}} (versie r4008; in deze lijst is {{{*}}} een glob)
     575|| {{{:righthandtraffic}}} || waar als er verkeer aan de rechterkant is op de huidige locatie (sinds r7193); zie [[left-right-hand-traffic]] voor schermafdruk  van gebieden ||
     576|| {{{:unclosed_multipolygon}}} || waar voor volledig geladen niet gesloten ralties van multipolygonen (sinds r8252) ||
     577|| {{{:open_end}}} || selecteren van eindknopen van niet gesloten relaties van multipolygonen met `relation:unclosed_multipolygon >:open_end node` (sinds r8252) ||
     578|| {{{:in-downloaded-area}}} || waar als een object binnen het brongebied ligt en onwaar als het in het gearceerde gebied ligt (sinds 8495). ||
     579{{{#!comment
     580|| {{{:modified}}} || gewijzigde objecten (Onthoud dat de stijlen niet zijn bijgewerkt als u een knoop verplaatst, u moet dus het stijlblad aan en uit schakelen om een bijgewerkte weergave te verkrijgen.) (sinds r7193) ||
     581}}}
     582U kunt pseudoklassen ook ontkennend gebruiken. Bijv. {{{!:new}}} voor alle oude objecten.
     583
     584=== Laag-identificatie ===
     585
     586Lagen kunnen worden gebruikt om meer dan één stijl voor een enkel object te maken. Hier is een voorbeeld:
     587{{{
     588#!css
     589way[highway=secondary] {
     590    width: 3;
     591    color: yellow;
     592}
     593
     594way[highway=tertiary] {
     595    width: 2;
     596    color: orange;
     597}
     598
     599way[access][access!=public]::non_public_access_layer {
     600    width: +2;
     601    color:red;
     602    dashes: 2;
     603    object-z-index:-1.0;
     604}
     605
     606way[bridge]::bridge_layer {
     607    width: +3;
     608    color:#000080;
     609    opacity:0.5;
     610    object-z-index:1.0;
     611}
     612}}}
     613Dit tekent alle secondary en tertiary wegen respectievelijk in geel en oranje. Elke weg met een tag access, anders dan public, zal een extra lijnstijl krijgen onder ('''{{{object-z-index:-1.0;}}}''') de hoofdlijn. Als dat gedeelte van de straat ook een brug blijkt te zijn, krijgt het ook een half transparante blauwe overlay. De relatieve bwaarde voor de dikte ('''{{{width: +2;}}}''') verwijst naar de dikte op de standaard laag (in dit geval 2 of 3).
     614
     615De naam voor de laag mag elke identifcatie zijn.
     616
     617 default::
     618 Als u de laag in de selector weglaat, is dat hetzelfde als {{{::default}}} gebruiken.
     619 *::
     620 In aanvulling daarop kunt u de * laag gebruiken om voorrang te verkrijgen en alle lagen te initialiseren.[[br]]
     621 het krijgt voorrang boven alle bestaande subgedeelten, dus
     622{{{
     623#!css
     624way::A { a; }
     625way::B { b; }
     626way::* { c; }
     627}}}
     628 is equivalent aan
     629{{{
     630#!css
     631way::A { a; }
     632way::B { b; }
     633way::A { c; }
     634way::B { c; }
     635}}}
     636 En het initialiseert nieuwe subgedeelten. Met andere woorden:
     637{{{
     638#!css
     639way::* { a; }
     640way::A { b; }
     641}}}
     642 is equivalent aan
     643{{{
     644#!css
     645way::A {}
     646way::* { a; }
     647way::A { b; }
     648}}}
     649 wat op zijn beurt hetzelfde is als
     650{{{
     651#!css
     652way::A { a; }
     653way::A { b; }
     654}}}
     655 of
     656{{{
     657#!css
     658way::A { a; b; }
     659}}}
     660
     661
     662=== Groeperen ===
     663
     664Regels met een algemeen declaratieblok kunnen worden gegroepeerd in één:
     665{{{
     666#!css
     667area[landuse=forest] { color: green;   width: 2; }
     668area[natural=wood] { color: green;   width: 2; }
     669}}}
     670is hetzelfde als
     671{{{
     672#!css
     673area[landuse=forest], area[natural=wood] { color: green;   width: 2; }
     674}}}
     675
     676=== Klassen ===
     677U kunt klassen toewijzen aan overeenkomende elementen, en andere selectors definiëren met behulp van deze klassen:
     678
     679{{{
     680#!css
     681/* klassen toewijzen */
     682selector {
     683  set class;
     684  /* of als equivalent */
     685  set .class;
     686}
     687
     688/* overeenkomende klassen */
     689way.class, node[foo=bar].class {
     690  /* ... */
     691}
     692}}}
     693
     694
     695Voorbeeld voor het toewijzen/overeen laten komen van een klasse, genaamd `path`:
     696{{{
     697#!css
     698way[highway=footway] { set path; color: #FF6644; width: 2; }
     699way[highway=path]    { set path; color: brown; width: 2; }
     700way.path { text:auto; text-color: green; text-position: line; text-offset: 5; }
     701}}}
     702U kunt klassen ook ontkennend gebruiken. Bijv. {{{way!.path}}} voor alle wegen, die geen deel uitmaken van de klasse ''.path''.
     703
     704== @supports-regel voor voorwaardelijk verwerken [''sinds 8087''] ==
     705
     706@supports-regels worden gebruikt om een gedeelte van de stijl onder bepaalde voorwaarden over te slaan. Gewoonlijk wilt u een object gebruiken dat werd geïntroduceerd in een nieuwere versie van JOSM, maar wil wel een stijl hebben om op terug te kunnen vallen voor gebruikers van oudere cliënten van JOSM clients. Voorbeeld:
     707{{{
     708#!css
     709@supports (min-josm-version: 9789) {
     710    way[highway] {
     711        width: 4;
     712        color: orange;
     713    }
     714    /* fijne nieuwe mogelijkheden */
     715    /* ... */
     716}
     717
     718@supports (max-josm-version: 9788) {
     719    way[highway] {
     720        width: 4;
     721        color: blue;
     722    }
     723    /* modus om op terug te vallen, meer eenvoudige objecten gebruiken */
     724    /* ... */
     725}
     726
     727@supports (icon-offset-x) {
     728    /* alleen als eigenschap icon-offset-x wordt ondersteund */
     729    node[amenity] {
     730        icon-offset-x: 5;
     731    }
     732}
     733}}}
     734
     735De syntaxis komt nagenoeg overeen met de officiële [http://dev.w3.org/csswg/css-conditional/ syntaxis voor CSS]. De volgende voorwaarden worden ondersteund:
     736
     737{{{#!th
     738'''Voorwaarde'''
     739}}}
     740{{{#!th
     741'''Beschrijving'''
     742}}}
     743|-
     744{{{#!td
     745(''<mapcsskey>'')
     746}}}
     747{{{#!td
     748Controleer of een bepaalde sleutel van MapCSS wordt ondersteund, bijv. `repeat-image` of `icon-offset-x`.
     749}}}
     750|-
     751{{{#!td
     752(min-josm-version: ''<getal>'')
     753}}}
     754{{{#!td
     755Alleen gedeelte {{{@supports}}} opnemen als de huidige versie van JOSM groter is dan of gelijk is aan het gespecificeerde getal.
     756}}}
     757|-
     758{{{#!td
     759(max-josm-version: ''<getal>'')
     760}}}
     761{{{#!td
     762Alleen gedeelte {{{@supports}}} opnemen als de huidige versie van JOSM kleiner is dan of gelijk is aan het gespecificeerde getal.
     763}}}
     764|-
     765{{{#!td
     766(user-agent: ''<tekenreeks>'')
     767}}}
     768{{{#!td
     769Alleen gedeelte {{{@supports}}} opnemen als de naam van de bewerker / renderer overeenkomt met de opgegeven tekenreeks. In JOSM is de enige geaccepteerde waarde {{{josm}}}.
     770}}}
     771
     772Voorwaarden mogen worden gecombineerd met {{{and}}}:
     773
     774{{{
     775#!css
     776@supports (min-josm-version: 8087) and (max-josm-version: 8200) {
     777 /* alleen voor JOSM-versies 8087 tot en met 8200 */
     778}
     779}}}
     780
     781Andere logische operatoren zoals {{{or}}} en {{{not}}} mogen ook worden gebruikt. Haakjes zijn nodig als u verschillende logische operatoren wilt combineren:
     782
     783{{{
     784#!css
     785@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) {
     786  /* voor JOSM-versie 8087 tot en met 8200 en voor de bewerker genaamd "myEditor" */
     787}
     788}}}
     789
     790Omdat @supports-regels alleen worden ondersteund in JOSM 8087 en later, zou u die ook als minimale versie van JOSM moeten specificeren in de meta-selector:
     791
     792{{{
     793#!css
     794meta {
     795    min-josm-version: "8087"; /* Deze stijl gebruikt @supports-regels */
     796    /* ... */
     797}
     798}}}
     799
     800== Media-query's [''sinds 6970'']  (vervallen) ==
     801
     802{{{#!td style="background-color: #faa"
     803Opmerking: media-query's zijn vervallen. U zou in plaats daarvan @supports-regels moeten gebruiken (zie boven).
     804}}}
     805Media-query's worden gebruikt om onder bepaalde voorwaarden een gedeelte van de stijl over te slaan. Gewoonlijk wilt u een object gebruiken dat werd geïntroduceerd in een nieuwere versie van JOSM, maar wil wel een stijl hebben om op terug te kunnen vallen voor gebruikers van oudere cliënten van JOSM clients. Voorbeeld:
     806{{{
     807#!css
     808@media (min-josm-version: 9789) {
     809    way[highway] {
     810        width: 4;
     811        color: orange;
     812    }
     813    /* fijne nieuwe mogelijkheden */
     814    /* ... */
     815}
     816
     817@media (max-josm-version: 9788) {
     818    way[highway] {
     819        width: 4;
     820        color: blue;
     821    }
     822    /* modus om op terug te vallen, meer eenvoudige objecten gebruiken */
     823    /* ... */
     824}
     825}}}
     826
     827De syntaxis komt nagenoeg overeen met de officiële [http://www.w3.org/TR/css3-mediaqueries/#syntax syntaxis voor CSS]. De volgende voorwaarden worden ondersteund:
     828
     829{{{#!th
     830'''Voorwaarde media'''
     831}}}
     832{{{#!th
     833'''Beschrijving'''
     834}}}
     835|-
     836{{{#!td
     837(min-josm-version: ''<getal>'')
     838}}}
     839{{{#!td
     840Alleen gedeelte {{{@media}}} opnemen als de huidige versie van JOSM groter is dan of gelijk is aan het gespecificeerde getal.
     841}}}
     842|-
     843{{{#!td
     844(max-josm-version: ''<getal>'')
     845}}}
     846{{{#!td
     847Alleen gedeelte {{{@media}}} opnemen als de huidige versie van JOSM kleiner is dan of gelijk is aan het gespecificeerde getal.
     848}}}
     849|-
     850{{{#!td
     851(user-agent: ''<tekenreeks>'')
     852}}}
     853{{{#!td
     854Alleen gedeelte {{{@media}}} opnemen als de naam van de bewerker / renderer overeenkomt met de opgegeven tekenreeks. In JOSM is de enige geaccepteerde waardee {{{josm}}}.
     855}}}
     856
     857Voorwaarden mogen worden gecombineerd met {{{and}}}:
     858
     859{{{
     860#!css
     861@media (min-josm-version: 6970) and (max-josm-version: 7014) {
     862 /* alleen voor JOSM-versies 6970 tot en met 7014 */
     863}
     864}}}
     865
     866Meerdere gecombineerde voorwaardeb mogen worden verbonden met een komma (logische ''or''):
     867
     868{{{
     869#!css
     870@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) {
     871  /* voor JOSM-versies 6970 tot en met 7014 en voor de bewerker genaamd "myEditor" */
     872}
     873}}}
     874
     875Omdat media-query's alleen worden ondersteund in JOSM 6970 en later, zou u deze ook als de minimale versie van JOSM moeten spcificeren in de meta-selector:
     876
     877{{{
     878#!css
     879meta {
     880    min-josm-version: "6970"; /* Deze stijl gebruik media-query's */
     881    /* ... */
     882}
     883}}}
     884
     885
     886{{{#!comment
     887Er is ook het sleutelwoord {{{not}}} (bekijk het gekoppelde CSS-doc voor details).
     888Dit is heímplementeerd, maar waarschijnlijk niet erg nuttig. Het staat u vrij documentatie toe te voegen.
     889}}}
     890
     891== Instellingen voor stijl ==
     892
     893[[wiki:/Nl:Help/Dialog/MapPaint/StyleSettings|Instellingen voor stijl]] worden gebruikt om de gebruikersinstellingen te verschaffen voor het aanpassen van een kaarttekenstijl. De gebruiker kan ze gebruiken in het dialoogvenster Kaarttekenstijlen. Instellingen voor stijl zijn beschikbaar sinds r7450. De interne stijl verschaft instellingen voor stijl sinds r7454. Onthoud dat er plannen zijn om de implementatie van instellingen voor stijl uit te breiden (momenteel worden alleen Booleaanse waarden ondersteund), dus de syntaxis voor MapCSS zou in de toekomst kunnen wijzigen (zie #10435).
     894
     895een instelling maken:
     896{{{
     897#!css
     898setting::highway_casing {
     899  type: boolean;
     900  label: tr("Teken highway casing");
     901  default: true;
     902}
     903}}}
     904een instelling gebruiken:
     905{{{
     906#!css
     907way[highway][setting("highway_casing")] {
     908  casing-width: 2;
     909  casing-color: white;
     910}
     911}}}
     912
     913== Eigenschappen ==
     914
     915=== Algemene eigenschappen ===
     916
     917||=  '''Sleutel''' =||= '''Beschrijving''' =||= '''Opmaak waarde''' =||= '''standaard waarde''' =||
     918|| {{{z-index}}}                                 || Specificeer de volgorde waarin de objecten worden getekend: De objecten met een hogere z-index worden bovenop objecten met een lagere z-index getekend || ''Getal'' (mag negatief zijn) ||  0  ||
     919|| {{{major-z-index}}} || Soortgelijk aan {{{z-index}}}, maar heeft een hogere prioriteit dan {{{z-index}}}. Dus als een object een hogere {{{major-z-index}}} heeft dan een ander, wordt het er bovenop getekend. Als de {{{major-z-index}}} hetzelfde is, bepaalt {{{z-index}}}. || ''Getal'' (mag negatief zijn) ||  Afhankelijk van stijlelement: area: 1, casing: 2, left-/right-casing: 2.1, line-pattern: 2.9, line: 3, point: 4, default-point: 4.1, line-text: 4.9, point-text: 5   ||
     920|| {{{object-z-index}}} || Soortgelijk aan {{{z-index}}}, maar heeft een lagere prioriteit. Beheert de tekenvolgorde voor overlappende objecten. Bijv. voor twee kruisende wegen met tekst: Gebruik {{{z-index}}} of {{{major-z-index}}} als u eerst de twe elijnen wilt tekenen en dan de twee bijschriften. Gebruik {{{object-z-index}}} als één van de twee wegen volledig bovenop de ander zou moeten liggen. || ''Getal'' (mag negatief zijn) ||  0  ||
     921|| {{{modifier}}} || Beter beheer, of een standaard lijn / symbool voor knoop wordt gegenereerd door JOSM. Dit gebeurt wanneer er geen juiste stijl ({{{modifier=false}}}) wordt gevonden op eender welke laag. || {{{false}}} of {{{true}}} || {{{false}}} voor de standaard laag en {{{true}}} voor elke andere laag ||
     922
     923
     924
     925=== Stijlen voor pictogrammen en symbolen ===
     926
     927||=  '''Sleutel''' =||= '''Beschrijving''' =||= '''Opmaak waarde''' =||= '''Standaard waarde''' =||
     928|| {{{icon-image}}} || Het pictogram op de positie van de knoop || ''Afbeelding'' ||  -  ||
     929|| {{{icon-opacity}}} || transparantie van de afbeelding van het pictogram || ''Transparantie'' ||  1.0  ||
     930|| {{{icon-width}}} || Breedte van het pictogram. Indien slechts één van de eigenschappen {{{icon-width}}} en {{{icon-height}}} wordt opgegeven, zak de afbeelding proportioneel worden geschaald. Het pictogram zal zijn originele grootte behouden, als noch {{{icon-width}}} noch {{{icon-height}}} zijn ingesteld. || ''Getal'' ||  -  ||
     931|| {{{icon-height}}} || Hoogte van het pictogram. (Zie {{{icon-width}}}) || ''Getal'' ||  -  ||
     932|| `icon-offset-x` || Verplaats het pictogram in horizontale richting (positieve waarden naar rechts) (sinds r8085) || ''Getal'' ||  0  ||
     933|| `icon-offset-y` || Verplaats het pictogram in verticale richting (positieve waarden naar beneden) (sinds r8085) || ''Getal'' ||  0  ||
     934|| `icon-rotation` || Draai het pictogram met de klok mee of tegen de klok in (negatieve waarde)(sinds r8260) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` ([https://developer.mozilla.org/en/docs/Web/CSS/angle definition]) van een cardinale richting (bijv. `northeast` of `sw`); Bekijk ook de functies `degree_to_radians`, `cardinal_to_radians`. ||  -  ||
     935|| {{{symbol-shape}}}                               || Geef een symbool weer op de positie van de knoop || {{{square}}}, {{{circle}}}, {{{triangle}}}, {{{pentagon}}}, {{{hexagon}}}, {{{heptagon}}}, {{{octagon}}}, {{{nonagon}}}, {{{decagon}}} ||  -  ||
     936|| {{{symbol-size}}} || Grootte van het symbool || ''Getal'', mag relatief zijn ("+4") ||  10  ||
     937|| {{{symbol-stroke-width}}} || Breedte buitenste lijn || ''Breedte'' ||  1.0 als {{{symbol-stroke-color}}} is ingesteld  ||
     938|| {{{symbol-stroke-color}}} || Lijnkleur || ''Kleur'' || {{{#FFC800}}} als {{{symbol-stroke-width}}} is ingesteld ||
     939|| {{{symbol-stroke-opacity}}} || Transparantie lijn || ''Transparantie'' ||  1.0  ||
     940|| {{{symbol-fill-color}}} || Kleur voor vulling van de vorm || ''Kleur'' || {{{blue}}}, tenzij ofwel {{{symbol-stroke-width}}} of {{{symbol-stroke-color}}} zijn ingesteld ||
     941|| {{{symbol-fill-opacity}}} || Transparantie vulling || ''Transparantie'' ||  1.0  ||
     942|| {{{text-...}}}, {{{font-...}}} ||||||  Algemene eigenschappen tekst & lettertype  ||
     943|| {{{text-anchor-horizontal}}} || Horizontale plaatsing tekstlabel || {{{left}}}, {{{center}}}, {{{right}}} ||  {{{right}}}  ||
     944|| {{{text-anchor-vertical}}} || Verticale plaatsing tekstlabel || {{{above}}}, {{{top}}}, {{{center}}}, {{{bottom}}}, {{{below}}} ||  {{{bottom}}}  ||
     945
     946Vertrouw niet op de standaard waarden voor eigenschappen van {{{symbol-...}}} (uitgezonderd {{{opacity}}}). Zij zijn bedoeld voor "snelle & vuile" stijlbladen en zouden moeten worden ingesteld op een expliciete waarde.
     947
     948
     949
     950
     951
     952=== Lijnstijlen ===
     953||=  '''Sleutel''' =||= '''Beschrijving''' =||= '''Opmaak waarde''' =||= '''Standaard waarde''' =||
     954|| {{{width}}} || Lijnbreedte || ''Breedte'' ||  -  ||
     955|| {{{color}}} || Lijnkleur || ''Kleur'' ||  waarde van {{{fill-color}}} of (indien niet ingesteld) JOSM's standaard niet getagde kleur ({{{#808080}}}) ||
     956|| {{{opacity}}} || Hoe transparant de lijn is. || ''Transparantie'' ||  1.0  ||
     957|| {{{dashes}}} || Een array van wisselende aan/uit lengten || lijst met getallen, bijv. [[br]]> 15, 5 [[br]][[br]]mag worden geschreven als expressie: [[br]] > {{{list(3, 4, 5, 6)}}} [[br]][[br]]of het selutelwoord {{{none}}}[[br]]om de streepjes uit te schakelen ||  -  ||
     958|| {{{dashes-offset}}} || Verplaats het patroon van streepjes met een bepaalde hoeveelheid || ''Getal'' (>= 0) ||  0  ||
     959|| {{{dashes-background-color}}} || De kleur die gebruikt moet worden tussen de streepjes (optioneel) || ''Kleur'' ||  -  ||
     960|| {{{dashes-background-opacity}}} || Waarde van transparantie voor de achtergrond van de streepjes || ''Transparantie'' ||  waarde van {{{opacity}}}  ||
     961|| {{{linecap}}} || Vorm aan het einde van de lijn (zie [http://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty hier]) || {{{none}}}, {{{round}}}, {{{square}}} ||  {{{none}}}  ||
     962|| {{{linejoin}}} || Vorm op hoeken van de lijn || {{{round}}}, {{{miter}}}, {{{bevel}}} ||  {{{round}}}  ||
     963|| {{{miterlimit}}}                                   || Van toepassing voor {{{linejoin: miter}}}. Stelt de maximale oversteek in als lijnsegmenten elkaar ontmoeten onder een zeer kleine hoek || ''Getal'' (>= 1.0) ||  10.0  ||
     964|| {{{offset}}} || Verplaats de lijn naar links of rechts (kijkend in de richting van de weg). Dit zou kunen worden gerbuikt voor het tekenen van meerdere rijstroken voor één weg of markeer de linker- en rechterzijde van de weg anders. || ''Getal'' (positieve waarde verplaatst de lijn naar links, negatieve naar rechts) ||  0  ||
     965|| {{{text-position}}} || Ingesteld op {{{line}}}, als tekst langs de lijn zou moeten worden getekend || {{{line}}}, {{{center}}} ||  -  ||
     966|| {{{text-...}}}, {{{font-...}}} ||||||  Algemene eigenschappen tekst & lettertype  ||
     967|| `repeat-image` || Herhaalde afbeelding langs een lijn ''[sinds 5801]'' || ''Afbeelding'' ||  -  ||
     968|| `repeat-image-width` || Breedte van de afbeelding (optioneel, zie `icon-width`) ''[sinds 5811]'' || ''Getal'' ||  -  ||
     969|| `repeat-image-height` || Hoogte van de afbeelding (optioneel) ''[sinds 5811]'' || ''Getal'' ||  -  ||
     970|| `repeat-image-align` || Uitlijning van de afbeelding. Boven-, onderrand of de (horizontale) middellijn van de afbeelding zal langs de lijn liggen ''[sinds 5801]'' || `top`, `center`, `bottom` ||  `center`  ||
     971|| `repeat-image-offset` || Verschuiving vanaf de lijn ''[sinds 5801]'' || ''Getal'' ||  0  ||
     972|| `repeat-image-spacing` || Afstand tussen herhalende afbeeldingen ''[sinds 5801]'' || ''Getal'' ||  0  ||
     973|| `repeat-image-phase` || Initiële afstand ana het begin van de lijn ''[sinds 5812]'' || ''Getal'' ||  0  ||
     974
     975Al deze eigenschappen (behalve voor {{{text-...}}} en {{{font-...}}}) bestaan ook met het voorvoegsel {{{casing-}}}. De casing is een tweede onafhankelijk lijnelement, dat onder d enormale lijn wordt getekend en kan worden gebruikt om een dun frame rondom de lijn te tekenen in een andere kleur.
     976||=  '''Sleutel''' =||= '''Beschrijving''' =||= '''Opmaak waarde''' =||= '''Standaard waarde''' =||
     977|| {{{casing-width}}}               || Bredte van de rand aan beide zijden van de hoofdlijn. In JOSM < 5214: Totale breedte van de casing || ''Breedte'' (valt terug op {{{width}}} indien een relatieve breeedte wordt gespecificeerd) ||  -  ||
     978|| {{{casing-color}}} || Kleur van de casing || ''Kleur'' ||  waarde van {{{fill-color}}} of (indien niet ingesteld) JOSM's standaard niet getagde kleur ({{{#808080}}}) ||
     979|| {{{casing-opacity}}} || Hoe transparant de casing is. || ''Transparantie'' ||  1.0  ||
     980|| {{{casing-}}}... || ... || ... ||  ...  ||
     981Soortgelijk aan {{{casing-}}}, zijn er ook de voorvoegsels {{{left-casing-}}} en {{{right-casing-}}}. Dat tekent aanvullende lijnen links en reehcts van de hoofdlijn.
     982
     983=== Stijlen voor gebieden ===
     984|||=  '''Sleutel''' =||= '''Beschrijving''' =||= '''Opmaak waarde''' =||= '''Standaard waarde''' =||
     985|| {{{fill-color}}} || Kleur waarmee het gebied gevuld moet worden || ''Kleur'' ||  -  ||
     986|| {{{fill-image}}} || Patroon van de afbeelding || ''Afbeelding'' ||  -  ||
     987|| {{{fill-extent}}} || Stel deze eigenschap in om alleen de omtrek van het gebied te tekenen. Het getal specificeert hoe ver vanaf de rand van het gebied, in de richting van het midden, moet worden gevuld. (Indien niet ingesteld zal het gebied volledig worden gevuld) ''[sinds 9008]'' || ''Getal'' ||  -  ||
     988|| {{{fill-opacity}}} || Hoe transparant de vulling is; van toepassing op zowel kleur als afbeelding || ''Transparantie'' ||  1.0  ||
     989|| {{{text-position}}} || Ingesteld op {{{center}}}, als de tejst in het midden van het gebied zou moeten worden getekend || {{{line}}}, {{{center}}} ||  -  ||
     990|| {{{text-...}}}, {{{font-...}}} ||||||  Algemene eigenschappen tekst & lettertype  ||
     991Vereiste eigenschappen om een stijl voor een gebied te maken: {{{fill-color}}} of {{{fill-image}}}
     992
     993
     994=== Eigenschappen voor tekst & lettertype ===
     995{{{#!th align=left valign=top
     996'''Sleutel'''
     997}}}
     998{{{#!th align=left valign=top
     999'''Beschrijving'''
     1000}}}
     1001{{{#!th align=left valign=top
     1002'''opmaak waarde'''
     1003}}}
     1004{{{#!th align=left valign=top
     1005'''Standaard waarde'''
     1006}}}
     1007|-------------------------------------------------------------------------------
     1008{{{#!td align=left  valign=top
     1009{{{text}}} 
     1010}}}
     1011{{{#!td align=left  valign=top
     1012Hoe de labeltekst te zoeken. Er wordt geen label weergegeven, tenzij deze instructie aanwezig is.
     1013}}}
     1014{{{#!td align=left  valign=top
     1015{{{auto}}}
     1016   leid de tekst automatisch af. De standaard tags voor de naam zijn: "{{{name:}}}"+''<LANG>'', "{{{name}}}", "{{{int_name}}}", "{{{ref}}}", "{{{operator}}}", "{{{brand}}}" en "{{{addr:housenumber}}}".
     1017
     1018   Configureer een lijst met namen van tags in de voorkeur "{{{mappaint.nameOrder}}}" om deze lijst te kunnen wijzigen. (na het wijzigen van de lijst, is opnieuw opstraten van JOSM vereist.)
     1019
     1020''Tekenreeks''
     1021   Geeft de sleutel van de tag aan waarvan de waarde moet worden gebruikt als tekst.
     1022
     1023''Expressies''
     1024  U mag een expressie invoeren om de weer te geven tekst te berekenen. Voorbeelden:
     1025  * {{{eval("dit is een statische tekst")}}} - renderert een statische tekst
     1026  * {{{eval(concat(tag("eerste"), "-", tag("tweede")))}}} - geeft de smanegevoegde tags "eerste" en "tweede" weer
     1027
     1028{{{""}}}
     1029   Een eerder ingestelde tekst verwijderen.
     1030}}}
     1031{{{#!td align=center  valign=top
     1032-
     1033}}}
     1034|-------------------------------------------------------------------------------
     1035|| {{{text-color}}} || De tekstkleur || ''Kleur'' ||  {{{white}}} voor lijnen en knopen, {{{#c0c0c0}}} voor gebieden (JOSM voorkeur voor kleuren "{{{text}}}" en "{{{areatext}}}") ||
     1036|| {{{text-opacity}}} || Hoe transparant de tekst is || ''Transparantie'' ||  1.0  ||
     1037|| {{{text-offset-x}}} || Verplaatst de tekst horizontaal, (niet ondersteund voor tekst langs de lijn) || ''Getal'' ||  0  ||
     1038|| {{{text-offset-y}}} (mag ook worden geschreven als {{{text-offset}}})  || Verplaatst de tekst verticaal, positieve waarden verplaatsen de tekst naar boven  || ''Getal'' ||  0  ||
     1039|| {{{text-halo-radius}}} || Grootte van der and van de tekstachtergrond (om de tekst zichtbaar te maken op een achtergrond met soortgelijke kleur) || ''Getal'' ||  -  ||
     1040|| {{{text-halo-color}}} || Kleur van de teksthalo || ''Kleur'' ||  aanvulling op de tekstkleur  ||
     1041|| {{{text-halo-opacity}}} || Transparantie voor de teksthalo || ''Transparantie'' ||  1.0  ||
     1042|| {{{font-family}}} || Familie van lettertype || ''Tekenreeks'' ||  "Helvetica"[[br]](JOSM voorkeur "mappaint.font")  ||
     1043|| {{{font-size}}} || grootte lettertype || ''Getal'' ||  8[[br]](JOSM voorkeur "mappaint.fontsize")  ||
     1044|| {{{font-weight}}} || vet of niet || {{{bold}}}, {{{normal}}} ||  {{{normal}}}  ||
     1045|| {{{font-style}}} || cursief of niet || {{{italic}}}, {{{normal}}} ||  {{{normal}}}  ||
     1046
     1047'' '''Breedte''' ''
     1048 - 14.0 (elk positief getal)
     1049 - {{{default}}} (gebruik de standaard lijnbreedte van JOSM, die 2 is, mar mag worden geconfigureerd)
     1050 - {{{thinnest}}} (tekent de lijn zo dun als mogelijk is)
     1051 - +3 (met teken + er voor) voegt de hoeveelheid toe aan de breedte op de standaard laag. Dit is alleen van toepassing voor stijlen die niet op de standaard laag liggen, bijv. accenten. Een andere manier om dit te schrijven zou zijn {{{prop("width","default")+3}}}. Voor {{{casing-width}}} verwijst dit naar de waarde {{{width}}} op dezelfde laag.
     1052
     1053'' '''Afbeelding''' ''
     1054 Ziee [wiki:/Nl:Help/Styles/Images].
     1055
     1056'' '''Kleur''' ''
     1057 * benoemde kleur die kan worden gevonden in [http://www.w3.org/TR/css3-color/#svg-color deze] lijst
     1058 * HTML-stijl: '''{{{#RRGGBB}}}''', '''{{{#RGB}}}''', '''{{{#RRGGBBAA}}}'''
     1059 * '''{{{rgb(/*r*/, /*g*/, /*b*/)}}}''' - Waarde RGD met argumenten van 0.0 tot en met 1.0
     1060 * '''{{{rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)}}}''' - Waarde RGB met alfa
     1061 * '''{{{hsb_color(/*hue*/, /*saturation*/, /*brightness*/)}}}''' - kleur uit de kleurruimte HSB
     1062
     1063'' '''Transparantie''' ''
     1064 * van 0.0 (transparant) tot en met 1.0 (ondoorzichtig)
     1065
     1066'' '''Tekenreeks''' ''
     1067 * elk reeks van tekens, tussen anahalingstekens, bijv. {{{"images/fill.png"}}}. Als de tkeenreeks een identificatie is, zijn aanhalingstekens optioneel. (Aanhalingstekens en teken backslash mogen worden geëscaped.)
     1068
     1069'' '''Getal''' ''
     1070 * integer of floating point (in eenvoudige vorm bijv. 0.3). Mag in het algemeen negatief zijn, maar de meesteeigenschappen ondersteunen geen negatieve getallen
     1071 * heeft een speciale betekenis als u er een teken "+" vóór zet (relatieve breedte)
     1072
     1073== Expressies voor eval ==
     1074
     1075
     1076Zie [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.Functions.html#method_summary Javadoc of Functions] voor de up-to-date lijst met functies die worden ondersteund door de implementatie van MapCSS in JOSM.
     1077
     1078 +, -, *, /::
     1079  rekenkundige bewerkingen
     1080 ||, &&, !::
     1081  Booleaanse bewerkingen
     1082 <, >, <=, >=, ==::
     1083  vergelijkinsoperatoren
     1084 asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, random, round, signum, sin, sinh, sqrt, tan, tanh::
     1085  in de gebruikelijke betekenis, [http://download.oracle.com/javase/7/docs/api/java/lang/Math.html details]
     1086 cond(b, fst, snd)::
     1087 b ? fst : snd::
     1088  if ('''b''') then '''fst''' else '''snd'''
     1089 list(a, b, ...)::
     1090  maak een lijst met waarden, bijv. voor de eigenschap {{{dashes}}}
     1091 get(lst, n)::
     1092  haal het ''n''e element van de lijst ''lst'' op (tellen begint bij 0) [''sinds 5699'']
     1093 split(sep, str)::
     1094  splits de tkeenreeks ''str'' op die punten waar de scheidingsreeks ''sep'' voorkomt, geeft een lijst terug [''sinds 5699'']
     1095 prop(''p_name'')::
     1096  waarde van de eigenschap ''p_name'' van de huidige laag, bijv. prop({{{"width"}}})
     1097 prop(''p_name'', ''layer_name'')::
     1098  eigenschap van de laag ''layer_name''
     1099 is_prop_set(''p_name'')::
     1100  true, als de eigenschap ''p_name'' is ingesteld voor de huidige laag
     1101 is_prop_set(''p_name'', ''layer_name'')::
     1102  true, als de eigenschap ''p_name'' is ingesteld voor de laag ''layer_name''
     1103 tag(''key_name'')::
     1104  haal de waarde van de sleutel ''key_name'' op uit het bevraagde object
     1105 parent_tag(''key_name'')::
     1106  haal de waarde van de sleutel ''key_name'' op uit de ouder van het object
     1107 parent_tags(''key_name'')::
     1108  geeft alle waarden van de ouders terug voor de sleutel ''key_name'' als een lijst gesorteerd in een natuurlijke volgorde [''sinds 8775'']
     1109 has_tag_key(''key_name'')::
     1110  true, als het object een tag heeft met de opgegeven sleutel
     1111 rgb(''r'', ''g'', ''b'')::
     1112  maak kleurwaarde (argumenten van 0.0 tot en met 1.0)
     1113 hsb_color(''h'', ''s'', ''b'')::
     1114  maak kleur uit hue, saturation en brightness (argumenten van 0.0 tot en met 1.0) [''sinds 6899'']
     1115 red(''clr''), green(''clr''), blue(''clr'')::
     1116  haal de waarde van de kleurkanelen op in het kleurmodel RGB
     1117 alpha(''clr'')::
     1118  haal de waarde Alfa op van de opgegeven kleur [''sinds 6749'']
     1119 length(''str'')::
     1120  lengte van een tekenreeks
     1121 count(''lst'')::
     1122  lengte van een lijst, d.i. telt zijn elementen [''sinds 7162'']
     1123 length(''lst'')::
     1124  lengte van een lijst [''sinds 5699''] – vervallen ''sinds 7162''
     1125 any(obj1, obj2, ...)::
     1126  geeft het eerste object teruf dat niet null is (vroeger coalesce, [''sinds 7164''])
     1127 concat(''str1'', ''str2'', ...)::
     1128  voeg de tekenreeksen samen tot één
     1129 join(''sep'', ''str1'', ''str2'', ...)::
     1130  voeg de tekenreeksen samen, met ''sep'' als scheidingsteken [''sinds 6737'']
     1131 join_list(''sep'', ''list_name'')::
     1132   voeg de elementen van de lijst ''list_name'' samen tot één tekenreeks, gescheiden door het scheidingsteken ''sep'' [''sinds 8775'']
     1133 JOSM_search("...")::
     1134  true, als zoekactie van JOSM van toepassing is op het object
     1135 tr(str, arg0, arg1, ...)::
     1136  vertaal vanuit het Engels naar de huidige taal (alleen voor tekenreeksennin de gebruikersinterface van JOSM) [''sinds 6506'']
     1137 regexp_test(regexp, string)::
     1138  test of ''string'' overeenkomt met het patroon van ''regexp'' [''sinds 5699'']
     1139 regexp_test(regexp, string, flags)::
     1140  test of ''string'' overeenkomt met het patroon van ''regexp''; flags is een tekenreeks die kan bevatten "i" (hoofdletter ongevoelig), "m" (multiregel) en "s" ("dot all") [''sinds 5699'']
     1141 regexp_match(regexp, string)::
     1142  probeert ''string'' overeen te laten komen met het patroon van ''regexp''. Geeft een lijst met gevangen groepen terug bij succes. Het eerste element (index 0) is de volledige overeenkomst, d.i. ''string''). Verdere elementen corresponderen met de gedeelten tussen haakjes van de reguliere expressie. [''sinds 5701'']
     1143 regexp_match(regexp, string, flags)::
     1144  probeert ''string'' overeen te laten komen met het patroon van ''regexp''. Geeft een lijst met gevangen groepen terug bij succes. Het eerste element (index 0) is de volledige overeenkomst, d.i. ''string''). Verdere elementen corresponderen met de gedeelten tussen haakjes van de reguliere expressie. Flags is een tekenreeks die kan bevatten "i" (hoofdletter ongevoelig), "m" (multiregel) en "s" ("dot all") [''sinds 5701'']
     1145 substring(str, idx)::
     1146  geef de subtekenreeks ''str'' terug, beginnend op de index ''idx'' (0-index) [''sinds 6534'']
     1147 substring(str, start, end)::
     1148  geef de subtekenreeks ''str'' terug, beginnend op de index ''start'' (inclusief) tot en met ''end'' (exclusief) (0-index) [''sinds 6534'']
     1149 replace(string, old, new)::
     1150   vervangt elke instantie van de subtekenreeks ''old'' in de tekenreeks ''string'' door de tekst ''new''
     1151 osm_id()::
     1152  geeft de ID van OSM terug voor het huidige object [''sinds 5699'']
     1153 URL_encode(str)::
     1154  [https://en.wikipedia.org/wiki/Percent-encoding percentage coderen] van een tekenreeks. kan nuttig zijn voor gegevens-URL's [''sinds 6805'']
     1155 XML_encode(str)::
     1156  escape speciale tekens in XML. Bijv. {{{<}}} wordt {{{&lt;}}}, andere speciale tekens: {{{>}}}, {{{"}}}, {{{'}}}, {{{&}}}, {{{\n}}}, {{{\t}}} en {{{\r}}} [''sinds 6809'']
     1157 CRC32_checksum(''str'')::
     1158  bereken de controlesom CRC32 van een tekenreeks (resultaat is een geheel getal tussen 0 tot en met 2^32^-1) [''sinds 6908'']
     1159 is_right_hand_traffic() [''sinds 7193'']::
     1160  controleer of er links- of rechtsrijdend verkeer is op de huidige locatie.
     1161 number_of_tags() [''sinds 7237'']::
     1162  gefet het aantal tags terug voor het huidige object van OSM
     1163 print(o) [''sinds 7237'']::
     1164  drukt een weergave van de tekenreeks `o` af naar de opdrachtregel (voor debuggen)
     1165 println(o) [''sinds 7237'']::
     1166  drukt een weergave van de tekenreeks `o` af naar de opdrachtregel, gevolgd door een neiuwe regel (voor debuggen)
     1167 JOSM_pref(''key'', ''default'') [''sinds 7238, met beperkingen sinds 3856'']::
     1168  haal de waarde op uit de uitgebreide voorkeuren van JOSM. Op deze manier kunt u de gebruiker bepaalde opties bieden en de stijl aan te passen te maken. Het werkt met tekenreeksen, getallen, kleuren en Booleaanse waarden. [[br]][Deze functie bestaat sinds versie 3856, maar met enkele beperkingen. `JOSM_pref` geeft altijd een tekenreeks terug, maar in versie 7237 en eerder, werkte de automatische conversie van de tekenreeks naar Booleaanse waarde en kleur niet. U kunt de volgende workarounds voor Booleaanse waarden en kleuren gebruiken in versie 7237 en eerder: `cond(JOSM_pref("myprefkey", "true")="true", "X", "O")` en `html2color(JOSM_pref("mycolor", "#FF345611"))`. Deze expliciete conversies zouden niet langer nodig behoeven te zijn in versie 7238 en later. Automatische conversie naar een getal werkt in elke versie.]
     1169 setting() [''sinds 7450'']::
     1170  een [[wiki:/Nl:Help/Styles/MapCSSImplementation#Stylesettings instelling voor stijl]] gebruiken
     1171 degree_to_radians() [''sinds 8260'']::
     1172  geeft een in graden opgegeven richting terug in radialen
     1173 cardinal_to_radians() [''sinds 8260'']::
     1174  geeft een cardinale richting terug in radialen
     1175 waylength() [''sinds 8253'']::
     1176  gefet d elengte van de weg in meters terug
     1177 areasize() [''sinds 8253'']::
     1178  geeft het gebied van een gesloten weg terug in vierkante meters
     1179 
     1180
     1181
     1182=== Voorbeelden ===
     1183
     1184* symnool van een cirkel voor huisnummer waarvan de grootte afhankelijk is van het aantal cijfers
     1185{{{
     1186#!css
     1187node[addr:housenumber] {
     1188    symbol-shape: circle;
     1189    symbol-size: eval((min(length(tag("addr:housenumber")), 3) * 5) + 3);
     1190    symbol-fill-color: #B0E0E6;
     1191
     1192    text: "addr:housenumber";
     1193    text-anchor-horizontal: center;
     1194    text-anchor-vertical: center;
     1195    text-offset-x: -1;
     1196    text-offset-y: -1; }
     1197   
     1198node[addr:housenumber]::hn_casing {
     1199    z-index: -100;
     1200    symbol-shape: circle;
     1201    symbol-size: +2;
     1202    symbol-fill-color: blue;
     1203}
     1204}}}
     1205* kleuren inverteren
     1206{{{
     1207#!css
     1208*::* {
     1209    color: eval(rgb(1 - red(prop(color)), 1 - green(prop(color)), 1 - blue(prop(color))));
     1210    fill-color: eval(rgb(1 - red(prop(fill-color)), 1 - green(prop(fill-color)), 1 - blue(prop(fill-color))));
     1211}
     1212}}}
     1213* willekeurige dingen
     1214{{{
     1215#!css
     1216way {
     1217    width: eval(random() * 20);
     1218    color: eval(rgb(random(), random(), random()));
     1219}
     1220}}}
     1221
     1222* regexp die overeenkomt met voorbeeld: wijzig "nameXXXsubname" naar "name::subname"
     1223{{{
     1224#!css
     1225*[name=~/.+XXX.+/]
     1226{
     1227    _match: regexp_match("(.+?)XXX(.+)", tag("name"));
     1228    text: concat(get(prop("_match"),1), "::", get(prop("_match"),2));
     1229}
     1230}}}
     1231
     1232* kleur gebouwen in verschillende kleuren, afhankelijk van de straat in de tags address
     1233{{{
     1234#!css
     1235area[building][addr:street] {
     1236    fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7);
     1237    fill-opacity: 0.8;
     1238}
     1239}}}
     1240
     1241
     1242== Opmerkingen over compatibiliteit ==
     1243=== MapCSS 0.2 ===
     1244
     1245==== Grammatica ====
     1246
     1247 * {{{way[oneway=yes]}}} is geen tovenarij, u mag in plaats daarvan {{{way[oneway?]}}} gebruiken
     1248 * geen {{{@import}}}
     1249 * JOSM vereist niet dat {{{eval(...)}}} expressies omsluit, maar voor compatibiliteit met andere implementaties van MapCSS zou u het uit moeten schrijven
     1250
     1251==== Eigenschappen ====
     1252Op dit moment ondersteunt JOSM de volgende eigenschapen ''niet'':
     1253 line: ::
     1254  {{{image}}}
     1255 label: ::
     1256  {{{font-variant, text-decoration, text-transform, max-width}}}
     1257 shield: ::
     1258  niet ondersteund
     1259
     1260=== Halcyon (Potlatch 2) ===
     1261
     1262 * Tekstlabel wordt geplaatst in het midden van het pictogram. Plaats voor compatibiliteit met Halcyon
     1263{{{
     1264#!css
     1265node { text-anchor-vertical: center; text-anchor-horizontal: center; }
     1266}}}
     1267 aan het begin van uw srijlblad.
     1268 * standard  is de z-index in Halcyon 5, maar het is 0 in JOSM
     1269 * '''{{{image: circle;}}}''' correspondeert met '''{{{symbol-shape: circle;}}}'''
     1270
     1271=== Kothic ===
     1272
     1273 * Kothic heeft ondersteuning voor eval, die waarschijnlijk afwijkt van de eval in JOSM.
     1274 * Kothic begrijpt eenheden, terwijl JOSM altijd rekent in pixels.
     1275 * De mogelijkheden voor uittrekken zijn niet beschikbaar in JOSM
     1276
     1277=== Ceyx ===
     1278
     1279 * lijkt te hebben {{{[tunnel=1]}}} in plaats van {{{[tunnel=yes]}}} (Halcyon) of {{{[tunnel?]}}} (JOSM)
     1280
     1281== Zie ook ==
     1282 * [wiki:/Nl:Help/Validator/MapCSSTagChecker MapCSSTagChecker]
     1283 * [wiki:/Nl:Styles Stijlen]