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


Ignore:
Timestamp:
2025-08-15T20:03:39+02:00 (5 months ago)
Author:
makmar
Comment:

--

Legend:

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

    v1 v1  
     1[[TranslatedPages(revision=268)]]
     2
     3[[PageOutline(2-10,Table of Contents)]]
     4= Υλοποίηση MapCSS=
     5Η υλοποίηση του [osmwiki:MapCSS/0.2 MapCSS] στο JOSM χρησιμοποιείται για τις εξής λειτουργίες:
     6
     7* [wikitr:/Styles Τεχνοτροπίες Βαφής Χάρτη]
     8* [wikitr:/Rules Κανόνες επικύρωσης], δείτε το [wikitr:/Help/Validator/MapCSSTagChecker ελεγκτής ετικετών MapCSS] για το ειδικό μέρος μόνο για τους κανόνες.
     9* [wikitr:/Help/Action/Search Παράθυρο Αναζήτησης]
     10
     11Συνιστάται η εγκατάσταση του [https://marketplace.visualstudio.com/items?itemName=whammo.mapcss-syntax MapCSS Syntax Highlighter] στο VS Code για να προσθέσετε οπτική επισήμανση για τη βαφή MapCSS και τη σύνταξη επικύρωσης.
     12
     13== Γενική Δομή ==
     14Ένα φύλλο στυλ MapCSS περιέχει κανόνες της μορφής:
     15{{{
     16#!mapcss
     17selector {
     18    prop: value;
     19    /* ... */
     20    prop: value;
     21    /* and/or */
     22    set: class;
     23    set: .class;
     24    /* σημειώστε ότι οι κανόνες επικύρωσης δεν χρησιμοποιούν την άνω και κάτω τελεία μετά το set */
     25}
     26}}}
     27Ο αλγόριθμος για την εύρεση των στυλ για ένα δεδομένο αντικείμενο έχει ως εξής:
     28{{{
     29 - για κάθε κανόνα:
     30     εάν εφαρμόζεται ο επιλογέας, ορίστε τις ιδιότητες από το { } μπλοκ
     31 - αναλύστε την τελική λίστα ιδιοτήτων και δημιουργήστε στυλ από αυτήν
     32}}}
     33
     34Το MapCSS χρησιμοποιεί τη μορφή '''σχολίων''' της CSS (`/* ... */`). Σημειώστε ότι κατά τον σχολιασμό μεγάλων τμημάτων ενός αρχείου MapCSS, ορισμένες δομές ενδέχεται να προκαλέσουν ένα απροσδόκητο τέλος του σχολίου, για παράδειγμα:
     35{{{
     36#!mapcss
     37/*
     38*[highway][name =~ /^R(\.|:)? .*/] { /* το τέλος μιας κανονικής έκφρασης μπορεί να οριστεί ως απροσδόκητο τέλος σχολίου */
     39        throwWarning: tr("foo");
     40}
     41*/
     42}}}
     43
     44
     45== Επιλογείς == #Selectors
     46Οι ''Επιλογείς'' υποδηλώνουν τις εκφράσεις φίλτρου ενός κανόνα MapCSS. Ο κανόνας εφαρμόζεται μόνο σε ένα αντικείμενο χάρτη, εάν οι επιλογείς του ταιριάζουν με το αντικείμενο.
     47
     48Οι επιλογείς στο MapCSS διαφέρουν από το τυπικό CSS για τον ιστό. Το MapCSS υποστηρίζει μόνο ένα υποσύνολο των τυπικών επιλογέων CSS, αλλά τους επεκτείνει με πρόσθετους επιλογείς που απαιτούνται για δεδομένα OSM.
     49
     50Μερικά βασικά παραδείγματα:
     51{{{
     52#!mapcss
     53/* εφαρμόζεται σε γραμμές με ετικέτα highway=residential */
     54way[highway=residential] {  /*  τα στυλ */}
     55
     56/* εφαρμόζεται σε νέες, κλειστές γραμμές στο επίπεδο 1, υπό την προϋπόθεση ότι έχουν την ετικέτα amenity=parking και access=customers, και υπό την προϋπόθεση
     57 * ότι το επίπεδο ζουμ είναι μεταξύ 11 και 14
     58 */
     59way|z11-14[amenity=parking][access=customers]:closed:new::layer_1 {...}
     60
     61
     62area[amenity=parking][access=customers], area[amenity=parking][!access] {...}
     63relation[type=route][route=foot] > way::relation_underlay {..}
     64}}}
     65
     66
     67Τα διαφορετικά στοιχεία ('''type'''-, '''zoom'''- , επιλογέας '''condition''', '''pseudo classes''', '''layer identifier''', '''grouping''' και '''child combinator''') εξηγούνται παρακάτω.
     68
     69
     70=== Τύπος Επιλογέα ===
     71{{{#!th valign=top
     72'''Επιλογέας'''
     73}}}
     74{{{#!th valign=top
     75'''Περιγραφή'''
     76}}}
     77|-------------------------------------------------------------------------------
     78{{{#!td align=center  valign=top
     79*
     80}}}
     81{{{#!td align=left  valign=top   
     82Ταιριάζει με οποιοδήποτε αντικείμενο
     83}}}
     84|-------------------------------------------------------------------------------
     85{{{#!td align=center  valign=top
     86`node`, `way`, `relation`
     87}}}
     88{{{#!td align=left  valign=top   
     89Ταιριάζει με τα αντικείμενα osm του δεδομένου τύπου.
     90}}}
     91|-------------------------------------------------------------------------------
     92{{{#!td align=center  valign=top
     93`area`
     94}}}
     95{{{#!td align=left  valign=top   
     96Ταιριάζει με οποιαδήποτε περιοχή, ανεξάρτητα από το αν τα όρια της περιοχής έχουν αποδοθεί με μία μόνο γραμμή ή με ένα σύνολο γραμμών ενωμένων μέσω μιας σχέσης.
     97{{{
     98#!mapcss
     99area[natural=beach] {...}
     100/* ... είναι ισοδύναμο με ... */
     101way[natural=beach], relation[type=multipolygon][natural=beach] {...}
     102}}}
     103Σημειώστε ότι το `area` επιλέγει επίσης μη κλειστές γραμμές, επομένως μπορεί να είναι χρήσιμο να προσθέσετε την ψευδή κλάση `:closed`. Ο Επικυρωτής JOSM θα δώσει μια προειδοποίηση για μη κλειστές γραμμές που έχουν στυλ περιοχής.
     104}}}
     105|-------------------------------------------------------------------------------
     106{{{#!td align=center  valign=top
     107`meta`
     108}}}
     109{{{#!td align=left  valign=top   
     110Ο επιλογέας `meta` ξεκινά έναν ειδικό κανόνα που πρέπει να βρίσκεται στην αρχή του αρχείου. Παρέχει γενικές πληροφορίες για το φύλλο στυλ. Όλο το λογισμικό που υποστηρίζει το MapCSS θα πρέπει να μπορεί να αναλύσει αυτό το τμήμα χωρίς σφάλματα, επομένως μην χρησιμοποιείτε ιδιαίτερες ή μη τυπικές επεκτάσεις σύνταξης σε αυτό το σημείο.
     111{{{
     112#!mapcss
     113meta {
     114    title: "Parking lanes";   /* τίτλος που εμφανίζεται στο μενού */
     115    icon: "logo_16x16x8.png"; /* μικρό εικονίδιο που εμφανίζεται στο μενού δίπλα στον τίτλο */
     116    version: "1.2";           /* η έκδοση του στυλ */
     117    description: "...";       /* μία ή δύο προτάσεις που περιγράφουν το στυλ */
     118    author: "...";            /* ο/οι δημιουργός/οί του στυλ */
     119    link: "https://...";      /* URL στην ιστοσελίδα του στυλ */
     120    min-josm-version: 6789;   /* η ελάχιστη έκδοση JOSM όπου λειτουργεί αυτό το στυλ */
     121}
     122}}}
     123}}}
     124|-------------------------------------------------------------------------------
     125{{{#!td align=center  valign=top
     126`canvas`
     127}}}
     128{{{#!td align=left  valign=top   
     129Ορισμένες πληροφορίες στυλ που δεν αφορούν συγκεκριμένα κόμβους, γραμμές ή σχέσεις.
     130{{{
     131#!mapcss
     132canvas {
     133    fill-color: #ffffea; /* το προηγούμενο χρώμα φόντου έχει καταργηθεί από το r7110 */
     134    default-points: false;
     135    default-lines: false;
     136}
     137}}}
     138{{{#!th
     139'''Κλειδί'''
     140}}}
     141{{{#!th
     142'''Περιγραφή'''
     143}}}
     144{{{#!th
     145'''Μορφή τιμής'''
     146}}}
     147{{{#!th
     148'''Προεπιλεγμένη Τιμή'''
     149}}}
     150|-
     151{{{#!td align=center
     152`fill-color`
     153}}}
     154{{{#!td
     155Καθορίζει το συνολικό χρώμα γεμίσματος/φόντου το (`background-color` έχει καταργηθεί από το r7110).
     156}}}
     157{{{#!td align=center
     158''Χρώμα''
     159}}}
     160{{{#!td align=center
     161`black`
     162}}}
     163|-
     164{{{#!td align=center
     165`default-points`
     166}}}
     167{{{#!td
     168Αν θα προστεθεί το προεπιλεγμένο στυλ σημείου σε κόμβους όπου δεν εφαρμόζεται άλλο στυλ.
     169}}}
     170{{{#!td align=center
     171''Boolean''
     172}}}
     173{{{#!td align=center
     174`true`
     175}}}
     176|-
     177{{{#!td align=center
     178`default-lines`
     179}}}
     180{{{#!td
     181Αν θα προστεθεί το προεπιλεγμένο στυλ γραμμής σε γραμμές όπου δεν εφαρμόζεται άλλο στυλ.
     182}}}
     183{{{#!td align=center
     184''Boolean''
     185}}}
     186{{{#!td align=center
     187`true`
     188}}}
     189}}}
     190
     191=== Θυγατρικός Επιλογέας ===
     192Εάν ένας κόμβος είναι μέρος μιας γραμμής, λέμε ότι είναι ''θυγατρικό'' αυτής της γραμμής. Ομοίως, εάν ένας κόμβος, μια γραμμή ή μια σχέση είναι μέλος μιας σχέσης, λέμε ότι είναι ''θυγατρικό'' αυτής της σχέσης.
     193
     194Στο MapCSS μπορείτε να χρησιμοποιήσετε έναν '''επιλογέα θυγατρικών''' που ταιριάζει μόνο εάν ταιριάζουν τόσο το γονικό όσο και το θυγατρικό αντικείμενο.
     195
     196Παράδειγμα:
     197{{{
     198#!mapcss
     199/*
     200 * ταιριάζει μόνο για μια γραμμή που είναι θυγατρική μιας σχέσης με ετικέτες
     201 * type=route και route=foot
     202 */
     203relation[type=route][route=foot] > way {...}
     204}}}
     205
     206Σημειώσεις:
     207* Ο επιλογέας Ζουμ και το αναγνωριστικό Επιπέδου είναι σχετικά μόνο για το τμήμα στα δεξιά του συμβόλου >.
     208* Οι συναρτήσεις ''prop()'' και ''is_prop_set()'' υποστηρίζονται μόνο στη δεξιά πλευρά του συμβόλου >.
     209* Οι συναρτήσεις ''parent_tag'' και ''parent_tags'' (δείτε παρακάτω) μπορούν να χρησιμοποιηθούν για την πρόσβαση σε ετικέτες από τον/τους γονικό/ούς.
     210* Για συμβατότητα με το πρότυπο MapCSS 0.2, `relation[type=route][route=foot] way {/*...*/}`, υποστηρίζεται επίσης η διαδρομή χωρίς το σύμβολο μεγαλύτερο από >. Ωστόσο, σε αυτήν την περίπτωση δεν μπορεί να καθοριστεί [https://josm.openstreetmap.de/wiki/El%3AHelp/Styles/MapCSSImplementation#LinkSelector επιλογέας Σύνδεσης].
     211
     212=== Γονικός Επιλογέας ===
     213Εκτός από τους θυγατρικούς Επιλογείς, το JOSM υποστηρίζει την έννοια του '''γονικού επιλογέα'''. Σημειώστε ότι οι γονικοί επιλογείς αποτελούν μια επέκταση του MapCSS ειδική για το JOSM και δεν υπάρχουν σε άλλες υλοποιήσεις του MapCSS.
     214
     215Παρόμοια με έναν θυγατρικό επιλογέα, ένας γονικός επιλογέας ταιριάζει μόνο εάν και το γονικό και το θυγατρικό αντικείμενο ταιριάζουν. Σε αντίθεση με τον θυγατρικό επιλογέα, χρησιμοποιείται ο χαρακτήρας <.
     216
     217Σε αντίθεση με τον θυγατρικό επιλογέα, το γονικό αντικείμενο θα "επιλεγεί". Με άλλα λόγια, οι ιδιότητες στο `{{{...}}}`-Μπλοκ Δηλώσεων εφαρμόζονται στο αντικείμενο που βρίσκεται στη δεξιά πλευρά του συμβόλου <.
     218
     219Παράδειγμα:
     220{{{
     221#!mapcss
     222/*
     223 * ταιριάζει για έναν δρόμο που έχει τουλάχιστον έναν κόμβο με την ετικέτα traffic_calming=*
     224 */
     225node[traffic_calming] < way[highway] {...}
     226}}}
     227
     228=== Επιλογέας συνθήκης ===
     229Οι επιλογείς μπορούν να περιλαμβάνουν ένα σύνολο συνθηκών. Εάν οποιαδήποτε από αυτές τις συνθήκες αξιολογηθεί ως ψευδής, ο επιλογέας δεν ταιριάζει και ο κανόνας στυλ δεν εφαρμόζεται.
     230
     231Μία '''συνθήκη χαρακτηριστικού''' ορίζει μια προϋπόθεση σε μια ετικέτα ενός αντικειμένου OSM.
     232
     233[=#condition_selector_operators]
     234{{{#!th valign=top
     235'''Χειριστής'''
     236}}}
     237{{{#!th valign=top
     238'''Περιγραφή'''
     239}}}
     240{{{#!th valign=top
     241'''Παράδειγμα'''
     242}}}
     243|-------------------------------------------------------------------------------
     244{{{#!td align=center valign=top
     245`=`
     246}}}
     247{{{#!td align=left valign=top
     248Ακριβής αντιστοίχιση της τιμής.
     249}}}
     250{{{#!td align=left valign=top
     251{{{
     252#!mapcss
     253way[highway=residential]                    /* διακρίνει πεζά-κεφαλαία, δηλαδή ΔΕΝ ταιριάζει, π.χ. highway=Residential or Highway=residential   */
     254node[name="My name"]                        /* χρησιμοποιήστε εισαγωγικά εάν το κλειδί ή η τιμή περιέχουν κενά                                               */
     255node["name:pl"="Królewiec"]                 /* χρησιμοποιήστε εισαγωγικά εάν το κλειδί ή η τιμή περιέχουν ειδικούς χαρακτήρες όπως άνω-κάτω τελεία ή χαρακτήρες unicode */
     256}}}
     257}}}
     258|-------------------------------------------------------------------------------
     259{{{#!td align=center valign=top
     260`!=`
     261}}}
     262{{{#!td align=left valign=top
     263Τιμή όχι ίση
     264}}}
     265{{{#!td align=left valign=top
     266{{{
     267#!mapcss
     268way[highway!=residential]
     269node[name!="My name"]
     270node["name:pl"!="Królewiec"]
     271}}}
     272}}}
     273|-------------------------------------------------------------------------------
     274{{{#!td align=center valign=top
     275`<`, `>`, `<=`, `>=`
     276}}}
     277{{{#!td align=left valign=top
     278Σύγκριση αριθμητικών τιμών.
     279
     280}}}
     281{{{#!td align=left valign=top
     282{{{
     283#!mapcss
     284node[population >= 50000]                   /* πληθυσμός μεγαλύτερος ή ίσος με 50000 */
     285node[ele = 3000]                            /* υψόμετρο με ακριβώς 3000 μέτρα        */
     286}}}
     287}}}
     288|-------------------------------------------------------------------------------
     289{{{#!td align=center valign=top
     290`^=`
     291}}}
     292{{{#!td align=left valign=top
     293Ταίριασμα προθέματος
     294}}}
     295{{{#!td align=left valign=top
     296{{{
     297#!mapcss
     298node[name ^= "myprefix"]                    /* η τιμή ξεκινά με 'myprefix' */
     299}}}
     300}}}
     301|-------------------------------------------------------------------------------
     302{{{#!td align=center valign=top
     303`$=`
     304}}}
     305{{{#!td align=left valign=top
     306Ταίριασμα Postfix
     307}}}
     308{{{#!td align=left valign=top
     309{{{
     310#!mapcss
     311node[name $= "mypostfix"]                   /* η τιμή τελειώνει με 'mypostfix' */
     312}}}
     313}}}
     314|-----------------------------------------------
     315{{{#!td align=center valign=top
     316`*=`
     317}}}
     318{{{#!td align=left valign=top
     319Ταίριασμα υποσυμβολοσειράς
     320}}}
     321{{{#!td align=left valign=top
     322{{{
     323#!mapcss
     324node[name *= "my substring"]                 /* η τιμή περιέχει την υποσυμβολοσειρά 'my substring' */
     325}}}
     326}}}
     327|-------------------------------------------------------------------------------
     328{{{#!td align=center valign=top
     329`~=`
     330}}}
     331{{{#!td align=left valign=top
     332Συμμετοχή σε λίστα
     333}}}
     334{{{#!td align=left valign=top
     335{{{
     336#!mapcss
     337*[vending~=stamps]                          /* η τιμή ετικέτας για την ετικέτα 'vending' αποτελείται από μια λίστα ;-διαχωρισμένων τιμών */
     338                                            /* και μία από αυτές τις τιμές είναι 'stamps'                                          */
     339}}}
     340}}}
     341|-------------------------------------------------------------------------------
     342{{{#!td align=center valign=top
     343`=~`
     344}}}
     345{{{#!td align=left valign=top
     346Ταίριασμα [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Κανονικής Έκφρασης]
     347
     348}}}
     349{{{#!td align=left valign=top
     350{{{
     351#!mapcss
     352*[name=~/^My_pattern.*/]                    /* tη τιμή της ετικέτας 'name' αιριάζει με την κανονική έκφραση '^My_pattern.*' */
     353                                            /* Σημειώστε ότι οι κανονικές εκφράσεις πρέπει να περικλείονται σε /.../                     */
     354}}}
     355Η αντιστοίχιση χωρίς διάκριση πεζών-κεφαλαίων μπορεί να ενεργοποιηθεί μέσω της ενσωματωμένης έκφρασης flag `(?i)` (δείτε [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#CASE_INSENSITIVE Pattern.CASE_INSENSITIVE]).
     356{{{
     357#!mapcss
     358*[name =~ /^(?i)(parking)$/]                 /* ταιριάζει με parking, Parking, PARKING, PaRkInG,...      */
     359*[name =~ /^(?U)(\p{Lower})+$/]              /* το όνομα αποτελείται μόνο από πεζούς χαρακτήρες unicode */
     360}}}
     361}}}
     362|-------------------------------------------------------------------------------
     363{{{#!td align=center valign=top
     364`!~` (από το r6455)
     365}}}
     366{{{#!td align=left valign=top
     367αρνητικό ταίριασμα [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Κανονικής Έκφρασης]
     368
     369}}}
     370{{{#!td align=left valign=top
     371{{{
     372#!mapcss
     373*[surface!~/paved|unpaved/]
     374}}}
     375}}}
     376|-------------------------------------------------------------------------------
     377{{{#!td align=center valign=top
     378`∈` ([https://www.fileformat.info/info/unicode/char/2208/index.htm U+2208], από το r6609)
     379}}}
     380{{{#!td align=left valign=top
     381στοιχείο του
     382
     383Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς που περιέχει τουλάχιστον ένα στοιχείο που ταιριάζει με τον αριστερό/ούς επιλογέα/είς.
     384}}}
     385{{{#!td align=left valign=top
     386{{{
     387#!mapcss
     388*[amenity=parking] ∈ area[amenity=parking] {
     389  throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking");
     390}
     391}}}
     392Βρίσκει περιοχές με `amenity=parking` περιέχουν τουλάχιστον έναν κόμβο ή περιοχή με `amenity=parking`. Από το r15064 αυτός ο κανόνας παράγει μία προειδοποίηση για κάθε στοιχείο στα αριστερά όταν υπάρχουν πολλαπλά ταιριάσματα.
     393}}}
     394|-------------------------------------------------------------------------------
     395{{{#!td align=center valign=top
     396`⊆` ([https://www.fileformat.info/info/unicode/char/2286/index.htm U+2286], από το r15102)
     397}}}
     398{{{#!td align=left valign=top
     399Υποσύνολο του ή Ίσο με
     400
     401Συνώνυμο του `∈`.
     402}}}
     403{{{#!td align=left valign=top
     404{{{
     405#!mapcss
     406*[amenity=parking] ⊆ area[amenity=parking] {
     407  throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking");
     408}
     409}}}
     410
     411}}}
     412|-------------------------------------------------------------------------------
     413{{{#!td align=center valign=top
     414`⊇` ([https://www.fileformat.info/info/unicode/char/2287/index.htm U+2287], από το r15102)
     415}}}
     416{{{#!td align=left valign=top
     417Υποσύνολο του ή Ίσο με
     418
     419
     420Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και περιέχεται σε ένα ή περισσότερα στοιχεία που ταιριάζουν με τους αριστερούς επιλογείς.}}}
     421{{{#!td align=left valign=top
     422{{{
     423#!mapcss
     424area[amenity=parking] ⊇ *[amenity=parking]
     425}}}
     426Βρίσκει κόμβους ή περιοχές με `amenity=parking` μέσα σε περιοχές με `amenity=parking`. Πιο αργό από `⊆`  και επομένως δεν είναι χρήσιμο στους κανόνες επικύρωσης, αλλά μπορεί να είναι χρήσιμο στο παράθυρο αναζήτησης.
     427}}}
     428|-------------------------------------------------------------------------------
     429{{{#!td align=center valign=top
     430`⊈` ([https://www.fileformat.info/info/unicode/char/2288/index.htm U+2288], από το r15102)
     431}}}
     432{{{#!td align=left valign=top
     433Ούτε Υποσύνολο του ούτε Ίσο με
     434
     435Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχει κανένα στοιχείο που ταιριάζει με τους αριστερούς επιλογείς.
     436}}}
     437{{{#!td align=left valign=top
     438{{{
     439#!mapcss
     440*[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes]
     441}}}
     442Βρίσκει περιοχές amenity=parking που έχουν lit=yes αλλά δεν περιέχουν λάμπα. Να προσθέτετε πάντα `:closed2` για να αποφύγετε ψευδώς θετικά αποτελέσματα, καθώς οι μη κλειστές περιοχές δεν περιέχουν ποτέ κάτι.
     443}}}
     444|-------------------------------------------------------------------------------
     445{{{#!td align=center valign=top
     446`⊉` ([https://www.fileformat.info/info/unicode/char/2289/index.htm U+2289], από το r15102)
     447}}}
     448{{{#!td align=left valign=top
     449Ούτε Υπερσύνολο ούτε Ίσο με
     450
     451Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχεται σε καμία περιοχή που ταιριάζει με τους αριστερούς επιλογείς.
     452}}}
     453{{{#!td align=left valign=top
     454{{{
     455#!mapcss
     456area[landuse=residential] ⊉ *[building]
     457}}}
     458Βρίσκει κτίρια που δεν βρίσκονται εντός καμίας περιοχής landuse=residential. Σημειώστε ότι αυτός ο τελεστής είναι πιθανό να παράγει ψευδώς θετικά αποτελέσματα όταν έχετε περιοχές `landuse=residential`που δεν ταιριάζουν με `:closed2`.
     459}}}
     460|-------------------------------------------------------------------------------
     461{{{#!td align=center valign=top
     462`⧉` ([https://www.fileformat.info/info/unicode/char/29c9/index.htm U+29C9], από το r6613)
     463}}}
     464{{{#!td align=left valign=top
     465διάβαση
     466}}}
     467{{{#!td align=left valign=top
     468{{{
     469#!mapcss
     470area:closed:areaStyle ⧉ area:closed:areaStyle {
     471  throwOther: tr("Overlapping Areas");
     472}
     473}}}
     474λαμβάνει υπόψη την ετικέτα `layer` εάν έχει οριστεί (από το r12986)
     475}}}
     476
     477Από την έκδοση r6554 είναι δυνατό να προστεθεί πρόθεμα `*` στο "value" ηλαδή στην έκφραση μετά τον τελεστή) ώστε να γίνει "απο-αναφορά" (δηλαδή να θεωρηθεί ως άλλο κλειδί και να ληφθεί η τιμή του). Έτσι, το `[key1 = *key2]` ή το `[key1=*key2]` συγκρίνει την τιμή του `key1` με την τιμή του `key2`, και το `[key =~ */pattern/]` θεωρεί την τιμή του `μοτίβου` κλειδιού ως κανονική έκφραση και την αντιστοιχίζει με την τιμή του `key`.
     478
     479Επιπλέον, μπορείτε να ελέγξετε εάν μια ετικέτα υπάρχει ή όχι:
     480
     481{{{#!th valign=top
     482'''Συνθήκη'''
     483}}}
     484{{{#!th valign=top
     485'''Παράδειγμα'''
     486}}}
     487|-------------------------------------------------------------------------------
     488{{{#!td align=left  valign=top
     489Παρουσία ετικέτας
     490}}}
     491{{{#!td align=left  valign=top   
     492{{{
     493#!mapcss
     494way[highway]                     /* αντιστοιχεί με οποιαδήποτε γραμμή που έχει ετικέτα 'highway' (διακρίνει πεζά-κεφαλαία)                                              */
     495way["name:fr"]                   /* χρησιμοποιήστε εισαγωγικά εάν το όνομα της ετικέτας περιλαμβάνει ειδικούς χαρακτήρες (κενό χώρο, άνω και κάτω τελεία, χαρακτήρες unicode, κ.λπ.) */
     496}}}
     497}}}
     498|-------------------------------------------------------------------------------
     499{{{#!td align=left  valign=top
     500Απουσία ετικέτας
     501}}}
     502{{{#!td align=left  valign=top   
     503{{{
     504#!mapcss
     505way[!highway]                     /* αντιστοιχεί με οποιαδήποτε γραμμή που δεν έχει ετικέτα 'highway' (διακρίνει πεζά-κεφαλαία)                               */
     506way[!"name:fr"]                   /* χρησιμοποιήστε εισαγωγικά εάν το όνομα της ετικέτας περιλαμβάνει ειδικούς χαρακτήρες (κενό χώρο, άνω και κάτω τελεία, χαρακτήρες unicode, κ.λπ.) */
     507}}}
     508}}}
     509|-------------------------------------------------------------------------------
     510{{{#!td align=left  valign=top
     511Παρουσία ετικέτας με [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html#sum Κανονικής έκφρασης] ταίριασμα (από το r6547)
     512}}}
     513{{{#!td align=left  valign=top   
     514{{{
     515#!mapcss
     516way[/^addr:/]                     /* αντιστοιχεί με οποιοδήποτε κλειδί `addr:*` */
     517}}}
     518}}}
     519|-------------------------------------------------------------------------------
     520{{{#!td align=left  valign=top
     521Απουσία ετικέτας με ταίριασμα Κανονικής έκφρασης
     522}}}
     523{{{#!td align=left  valign=top   
     524{{{
     525#!mapcss
     526way[!/^addr:/]                    /* αντιστοιχεί με οποιαδήποτε γραμμή που δεν έχει ετικέτα 'addr:*' */
     527}}}
     528}}}
     529
     530Μπορείτε να ελέγξετε εάν η τιμή μιας ετικέτας είναι λογική τιμή αλήθειας. Η τιμή αξιολογείται ως true, εάν είναι είτε
     531"yes", "true", ή "1". Όλες οι άλλες τιμές αξιολογούνται ως ψευδείς.
     532
     533{{{#!th valign=top
     534'''Συνθήκη'''
     535}}}
     536{{{#!th valign=top
     537'''Παράδειγμα'''
     538}}}
     539|-------------------------------------------------------------------------------
     540{{{#!td align=left  valign=top
     541Έλεγχος για  αληθή τιμή
     542}}}
     543{{{#!td align=left  valign=top   
     544{{{
     545#!mapcss
     546way[oneway?]                   /* αντιστοιχεί με οποιαδήποτε γραμμή με μια αληθή τιμή στην ετικέτα 'oneway' */
     547}}}
     548}}}
     549|-------------------------------------------------------------------------------
     550{{{#!td align=left  valign=top
     551Έλεγχος για ψευδή τιμή (από το r6513)
     552}}}
     553{{{#!td align=left  valign=top   
     554{{{
     555#!mapcss
     556way[oneway?!]                  /* αντιστοιχεί με οποιαδήποτε γραμμή με μια ψευδή τιμή  στην ετικέτα 'oneway' */
     557}}}
     558}}}
     559
     560=== Επιλογέας περιοχής === #Territoryselector
     561Μπορείτε να ελέγξετε αν ένα αντικείμενο βρίσκεται εντός ή εκτός μιας συγκεκριμένης περιοχής. Το JOSM διαθέτει εσωτερική βάση δεδομένων για αυτό. Το [source:/trunk/resources/data/boundaries.osm αρχείο περιοχών] μπορεί να ληφθεί και να ανοιχθεί στο JOSM για εξέταση  [https://josm.openstreetmap.de/attachment/wiki/Help/Styles/MapCSSImplementation/boundaries.png (προεπισκόπηση στιγμιότυπου)]. Περιέχει τα σύνορα όλων των χωρών του κόσμου. Για λόγους απόδοσης, τα σύνορα είναι απλοποιημένα. Μπορούν να γίνουν πιο ακριβή για ειδικές περιπτώσεις, κατόπιν αιτήματος. Οι περιοχές έχουν "ετικέτες" με τους [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2  κωδικούς ISO_3166-1_alpha-2]. Οι ΗΠΑ, ο Καναδάς, η Κίνα, η Ινδία και η Αυστραλία έχουν επιπλέον όρια για τις υποδιαιρέσεις τους. Δείτε τα ακόλουθα παραδείγματα για το πώς να χρησιμοποιείτε τους επιλογείς περιοχής. Οι επιλογείς περιοχής είναι λιγότερο χρήσιμοι στην τεχνοτροπία βαφής χάρτη και μπορεί να επιβαρύνουν σημαντικά την απόδοση εκεί. Ωστόσο, είναι πολύ πιο χρήσιμοι για [wikitr:/Help/Validator/MapCSSTagChecker κανόνες επικύρωσης  που βασίζονται σε MapCSS]. Για να επιλέξετε περιοχές με κυκλοφορία στα αριστερά ή στα δεξιά, υπάρχει απλούστερος τρόπος — δείτε τις [https://josm.openstreetmap.de/wiki/El%3AHelp/Styles/MapCSSImplementation#PseudoClasses Ψευδοκλάσεις]. Δείτε το #10387 για την κύρια υλοποίηση αυτής της λειτουργίας.
     562
     563{{{
     564#!mapcss
     565                                      /* ταιριάζει με οποιονδήποτε κόμβο που βρίσκεται …                             */
     566node[inside("FR")]                    /* … εντός της Γαλλίας (συμπεριλαμβάνονται τα υπερπόντια εδάφη) */
     567node[inside("FX")]                    /* … εντός της Μητροπολιτικής Γαλλίας (μόνο το
     568                                         πειρωτικό τμήμα με τα κοντινά νησιά, συμπεριλαμβανομένης της Κορσικής)   */
     569node[inside("EU")]                    /* … εντός της Ευρωπαϊκής Ένωσης                         */
     570node[inside("FR,DE")]                 /* … εντός της Γαλλίας __Ή__ εντός της Γερμανίας            */
     571node[inside("US-FL")]                 /* … εντός της πολιτείας Φλόριντα των ΗΠΑ                       */
     572
     573node[outside("FR")]                   /* … εκτός της Γαλλίας                                    */
     574node[outside("FR,DE")]                /* … εκτός της Γαλλίας __ΚΑΙ__ εκτός της Γερμανίας         */
     575node[inside("US")][outside("US-FL")]  /* … εντός των ΗΠΑ εκτός από την πολιτεία Φλόριντα           */
     576}}}
     577
     578=== Επιλογέας σύνδεσης ===#LinkSelector
     579Σε έναν θυγατρικό επιλογέα, μπορείτε να διατυπώσετε συνθήκες στη σύνδεση μεταξύ ενός γονικού  και ενός θυγατρικού αντικειμένου.
     580
     581Αν το γονικό αντικείμενο είναι μια σχέση, μπορείτε να ορίσετε συνθήκες για τον ''ρόλο'' που έχει ένα μέλος σε αυτήν τη σχέση.
     582{{{
     583#!mapcss
     584relation[type=route] >[role="link"] way {  /* ταιριάζει με οποιαδήποτε γραμμή που είναι μέλος της σχέσης διαδρομής με τον ρόλο 'link' */
     585   color: blue;
     586}
     587}}}
     588
     589{{{#!th valign=top
     590'''Τελεστής'''
     591}}}
     592{{{#!th valign=top
     593'''Περιγραφή'''
     594}}}
     595{{{#!th valign=top
     596'''Παράδειγμα'''
     597}}}
     598|-------------------------------------------------------------------------------
     599{{{#!td align=center  valign=top
     600`=`
     601}}}
     602{{{#!td align=left  valign=top   
     603Ακριβής αντιστοίχιση του ονόματος ρόλου. Το όνομα του `ρόλου` είναι υποχρεωτικό σε αυτό το πλαίσιο.
     604}}}
     605{{{#!td align=left  valign=top   
     606{{{
     607#!mapcss
     608relation >[role=residential] way           
     609relation >[role="My name"]   way           /* χρησιμοποιήστε εισαγωγικά αν η τιμή του ρόλου περιέχει κενά ή άλλους ειδικούς χαρακτήρες */
     610}}}
     611}}}
     612
     613Οι τελεστές `!=`, `^=`, `$=`, `*=` και `~=` Υποστηρίζονται επίσης. Ανατρέξτε στους [https://josm.openstreetmap.de/wiki/El%3AHelp/Styles/MapCSSImplementation#%CE%95%CF%80%CE%B9%CE%BB%CE%BF%CE%B3%CE%AD%CE%B1%CF%82%CF%83%CF%85%CE%BD%CE%B8%CE%AE%CE%BA%CE%B7%CF%82 τελεστές επιλογής συνθήκης].
     614
     615Οι κόμβοι σε γραμμές και τα μέλη σε σχέσεις είναι ταξινομημένα. Μπορείτε να διατυπώσετε συνθήκες για τη θέση ενός κόμβου σε μια γραμμή ή ενός αντικειμένου μέλους σε μια σχέση. Οι θετικοί αριθμοί μετράνε από το πρώτο έως το τελευταίο στοιχείο, οι αρνητικοί αριθμοί (από το r8236) μετράνε από το τελευταίο έως το πρώτο στοιχείο.
     616
     617{{{
     618#!mapcss
     619relation[type=route] >[index=1] way {  /* ταιριάζει με την πρώτη γραμμή που είναι μέλος της σχέσης διαδρομής  */
     620   color: blue;
     621}
     622
     623way >[index=-1] node {  /* ταιριάζει με τον τελευταίο κόμβο μιας γραμμής  */
     624   symbol-stroke-color: green;
     625}
     626
     627way!:closed >[index=1] node!:connection,
     628way!:closed >[index=-1] node!:connection {  /* ταιριάζει σε όλους τους μοναδικούς τερματικούς κόμβους μιας γραμμής */
     629   symbol-stroke-color: green;
     630}
     631}}}
     632
     633=== Επιλογέας ζουμ ===
     634Μπορείτε να συνδυάσετε έναν επιλογέα τύπου με έναν ''επιλογέα ζουμ'''. Ο επιλογέας ζουμ περιορίζει το εύρος των επιπέδων ζουμ στα οποία εφαρμόζεται ο αντίστοιχος κανόνας MapCSS.
     635||= '''Παράδειγμα 1''' =||= '''Παράδειγμα 2''' =||= '''Παράδειγμα 3''' =||= '''Περιγραφή''' =||
     636|| `way|z12 {...}` || `node|z12 {...}` || `node|z12[...] {...}` || Σε επίπεδο ζουμ 12 ||
     637|| `way|z13-15 {...}` || `node|z13-15 {...}` || `way|z13-15[...] {...}` ||Από 13 έως 15 ||
     638|| `way|z16- {...}` || `node|z16- {...}` || `node|z16-[...] {...}` || 16 και πάνω ||
     639|| `way|z-12 {...}` || `node|z-12 {...}` || `node|z-12[...] {...}` || 12 και κάτω ||
     640|| `way {...}` || `node{...}` || `way[...] {...}` || οποιοδήποτε επίπεδο ζουμ ||
     641
     642Ο ακριβής ορισμός των εύρων κλίμακας για κάθε επίπεδο ζουμ ενδέχεται να αλλάξει στο μέλλον. Με βάση τον εμπειρικό κανόνα, μπορείτε να περιμένετε να βρίσκεστε περίπου στο επίπεδο ζουμ ''n'' όταν οι εικόνες εμφανίζουν πλακίδια slippymap επιπέδου ''n''.
     643
     644=== Ψευδοκλάσεις ===#PseudoClasses
     645Δείτε το [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.PseudoClasses.html Javadoc] για την πιο πρόσφατη λίστα των ψευδοκλάσεων που υποστηρίζει η υλοποίηση MapCSS του JOSM.
     646
     647||= '''Κλάση''' =||= '''Περιγραφή''' =||
     648|| `:closed` || αληθές για γραμμές όπου ο πρώτος κόμβος είναι ίδιος με τον τελευταίο και για οποιαδήποτε (πλήρως ληφθείσα) σχέση πολυπολυγώνου ||
     649|| `:closed2` || ίδιο με το παραπάνω, αλλά αγνοεί αν το πολυπολύγωνο έχει ληφθεί πλήρως (από την έκδοση r9099) ||
     650|| `:completely_downloaded` || Αληθές για μια σχέση της οποίας όλα τα μέλη έχουν ληφθεί (από την έκδοση  r9099) ||
     651|| `:new` || όλα τα νέα αντικείμενα ||
     652|| `:connection` || αληθές για κόμβους που χρησιμοποιούνται από περισσότερες από μία γραμμές ||
     653|| `:unconnected` || αληθές για κόμβους που δεν χρησιμοποιούνται από καμία γραμμή (από την έκδοση r6687) ||
     654|| `:tagged` || Αυτό που το JOSM θεωρεί με ετικέτα, δηλαδή ένα αντικείμενο με ετικέτα-κλειδί διαφορετική από τις εξής: `source*`, `source_ref`, `note`, `comment`, `converted_by`, `created_by`, `watch*`, `fixme`, `FIXME`, `description`, `attribution` (έκδοση  r4008; σε αυτή την λίστα, το `*` είναι χαρακτήρας γενίκευσης)
     655|| `:area-style` || αληθές αν το αντικείμενο έχει στυλ περιοχής ||
     656|| `:righthandtraffic` || Αληθές αν υπάρχει κυκλοφορία δεξιάς πλευράς στην τρέχουσα τοποθεσία (από την έκδοση r7193); δείτε το [wikitr:/left-right-hand-traffic κυκλοφορία αριστερής και δεξιάς λωρίδας] για στιγμιότυπο οθόνης περιοχών ||
     657|| `:clockwise` || Αν η γραμμή είναι κλειστή και προσανατολισμένη δεξιόστροφα, ή αν είναι ανοιχτή και ο 1ος, 2ος και τελευταίος κόμβος της βρίσκονται σε δεξιόστροφη σειρά. ||
     658|| `:anticlockwise` || Αν η γραμμή είναι κλειστή και προσανατολισμένη αριστερόστροφα, ή αν είναι ανοιχτή και ο 1ος, 2ος και τελευταίος κόμβος της βρίσκονται σε αριστερόστροφη σειρά. ||
     659|| `:unclosed_multipolygon` || αληθές για πλήρως φορτωμένες, ανοιχτές σχέσεις πολυπολυγώνου (από την έκδοση r8252) ||
     660|| `:open_end` || για να επιλέξετε τελικούς κόμβους μη κλειστών πολυπολυγωνικών σχέσεων με το `relation:unclosed_multipolygon >:open_end node` (από την έκδοση r8252) ||
     661|| `:in-downloaded-area` || tαληθές εάν ένα αντικείμενο βρίσκεται εντός της περιοχής προέλευσης και ψευδές εάν βρίσκεται στην διαγραμμισμένη περιοχή (από την έκδοση r8495). ||
     662|| `:selected` || αληθές εάν ένα αντικείμενο έχει επιλεγεί στον επεξεργαστή (από την έκδοση r9341). ||
     663|| `:highlighted` || αληθές εάν το αντικείμενο είναι επισημασμένο ||
     664|| `:modified` || αλλαγμένα και νέα αντικείμενα (από την έκδοση r7193). ||
     665Μπορείτε επίσης να ακυρώσετε ψευδοκλάσεις. Π.χ. `!:new` για όλα τα παλιά αντικείμενα.
     666
     667=== Αναγνωριστικό Επιπέδου ===
     668Τα επίπεδα μπορούν να χρησιμοποιηθούν για τη δημιουργία περισσότερων από ενός στυλ για ένα μόνο αντικείμενο. Ακολουθεί ένα παράδειγμα:
     669{{{
     670#!mapcss
     671way[highway=secondary] {
     672    width: 3;
     673    color: yellow;
     674}
     675
     676way[highway=tertiary] {
     677    width: 2;
     678    color: orange;
     679}
     680
     681way[access][access!=yes]::non_public_access_layer {
     682    width: +2;
     683    color:red;
     684    dashes: 2;
     685    object-z-index:-1.0;
     686}
     687
     688way[bridge]::bridge_layer {
     689    width: +3;
     690    color:#000080;
     691    opacity:0.5;
     692    object-z-index:1.0;
     693}
     694}}}
     695Αυτό σχεδιάζει όλους τους δευτερεύοντες και τριτεύοντες δρόμους με κίτρινο και πορτοκαλί χρώμα αντίστοιχα. Οποιοσδήποτε δρόμος με ετικέτα πρόσβασης εκτός από το ναι θα λάβει ένα επιπλέον στυλ γραμμής κάτω από ('''`object-z-index:-1.0;`''') από την κύρια γραμμή. άν αυτό το τμήμα του δρόμου τυχαίνει να είναι γέφυρα, θα λάβει επίσης μια ημιδιαφανή μπλε επικάλυψη. Η τιμή σχετικού πλάτους ('''`width: +2;`''') αναφέρεται στο πλάτος στο προεπιλεγμένο επίπεδο (2 ή 3 σε αυτήν την περίπτωση).
     696
     697Το όνομα για το επίπεδο μπορεί να είναι οποιοδήποτε αναγνωριστικό.
     698
     699Εάν παραλείψετε το επίπεδο στον επιλογέα, αυτό είναι το ίδιο με τη χρήση του `::default`.
     700
     701Ένα ακόμη παράδειγμα:
     702{{{
     703#!mapcss
     704node[amenity=parking] {
     705    icon-image: "presets/vehicle/parking/parking.svg";    /* εμφανίζει το εσωτερικό εικονίδιο parking του JOSM στο προεπιλεγμένο επίπεδο */
     706    text: ref;                                            /* εμφανίζει την τιμή του κλειδιού ref ως κείμενο στο προεπιλεγμένο επίπεδο */
     707}
     708
     709node[amenity=parking][fee=yes]::fee {
     710    icon-image: "presets/money/exchange.svg";             /* εμφανίζει το εσωτερικό εικονίδιο ου JOSM στο επίπεδο χρέωσης */
     711    icon-offset-x: 14;                                    /* μετακινεί το εικονίδιο */
     712    icon-offset-y: -12;                                   /* μετακινεί το εικονίδιο */
     713    text: charge;                                         /* εμφανίζει την τιμή του κλειδιού charge ως κείμενο στο επίπεδο χρέωσης */
     714    text-offset-x: 16;                                    /* μετακινεί το κείμενο */
     715    text-offset-y: 17;                                    /* μετακινεί το κείμενο */
     716}
     717}}}
     718Το αποτέλεσμα φαίνεται ως εξής:
     719
     720[[Image(Help/Styles/MapCSSImplementation:multiple_icons_and_texts.png,link=)]]
     721
     722Επιπλέον, μπορείτε να χρησιμοποιήσετε το * επίπεδο για να παρακάμψετε και να αρχικοποιήσετε όλα τα επίπεδα. \\
     723Αυτό παρακάμπτει όλα τα υπάρχοντα υποτμήματα,  οπότε:
     724
     725{{{
     726#!mapcss
     727way::A { a; }
     728way::B { b; }
     729way::* { c; }  /* παρακάμπτει όλα τα υπάρχοντα υποτμήματα */
     730}}}
     731is equivalent to
     732{{{
     733#!mapcss
     734way::A { a; }
     735way::B { b; }
     736way::A { c; } /* παρακάμπτει  το a με c σε όλα τα υπάρχοντα υποτμήματα */
     737way::B { c; } /* παρακάμπτει  το b με c σε όλα τα υπάρχοντα υποτμήματα */
     738}}}
     739Και αρχικοποιεί νέα υποτμήματα. Με άλλα λόγια:
     740{{{
     741#!mapcss
     742way::* { a; }
     743way::A { b; }
     744}}}
     745είναι ισοδύναμο με
     746{{{
     747#!mapcss
     748way::A {}
     749way::* { a; }
     750way::A { b; }
     751}}}
     752το οποίο με τη σειρά του είναι το ίδιο με
     753{{{
     754#!mapcss
     755way::A { a; }
     756way::A { b; }
     757}}}
     758ή
     759{{{
     760#!mapcss
     761way::A { a; b; }
     762}}}
     763
     764=== Ομαδοποίηση  ===
     765Κανόνες με κοινό μπλοκ δηλώσεων μπορούν να ομαδοποιηθούν σε έναν:
     766{{{
     767#!mapcss
     768area[landuse=forest] { color: green;   width: 2; }
     769area[natural=wood] { color: green;   width: 2; }
     770}}}
     771είναι το ίδιο με
     772{{{
     773#!mapcss
     774area[landuse=forest], area[natural=wood] { color: green;   width: 2; }
     775}}}
     776
     777=== Κλάσεις  ===
     778Μπορείτε να αναθέσετε κλάσεις σε στοιχεία που ταιριάζουν, και να ορίσετε άλλους επιλογείς  χρησιμοποιώντας αυτές τις κλάσεις:
     779
     780{{{
     781#!mapcss
     782/* ανάθεση κλάσεων */
     783selector {
     784  set class;
     785  /* ή ισοδύναμα */
     786  set .class;
     787}
     788
     789/* ταίριασμα κλάσεων */
     790way.class, node[foo=bar].class {
     791  /* ... */
     792}
     793}}}
     794
     795
     796Παράδειγμα για ανάθεση/ταίριασμα μιας κλάσης με όνομα `path`:
     797{{{
     798#!mapcss
     799way[highway=footway] { set path; color: #FF6644; width: 2; }
     800way[highway=path]    { set path; color: brown; width: 2; }
     801way.path { text:auto; text-color: green; text-position: line; text-offset: 5; }
     802}}}
     803Μπορείτε επίσης να αρνηθείτε μια κλάση. Π.χ. `way!.path` για όλες τις γραμμές που δεν ανήκουν στην κλάση ''.path''.
     804
     805=== Κλάσεις και Επίπεδα μαζί ===
     806Εάν θέλετε να χρησιμοποιήσετε επίπεδο και κλάσεις μαζί, λάβετε υπόψη ότι πρέπει να προσδιορίσετε την κλάση μέσω του is_prop_set.
     807
     808{{{#!mapcss
     809node[railway=signal] { set sgnl; }
     810
     811/* δεν λειτουργεί */
     812node.sgnl::layer_signal_icon  { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
     813node.sgnl::layer_signal_text  { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... )
     814
     815/* χρησιμοποιήστε αντ' αυτού: is_prop_set("...", "default") */
     816node[is_prop_set("sgnl", "default")]::layer_signal_icon  { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
     817node[is_prop_set("sgnl", "default")]::layer_signal_text  { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... )
     818}}}
     819
     820=== @supports Υπό όρους Επεξεργασία  ===
     821Οι κανόνες @supports χρησιμοποιούνται για να παραλείπεται ένα τμήμα του στυλ κάτω από συγκεκριμένες συνθήκες. Συνήθως θέλετε να χρησιμοποιήσετε μια λειτουργία που εισάγεται σε μια νεότερη έκδοση του JOSM, αλλά θέλετε να έχετε ένα εφεδρικό στυλ για χρήστες παλαιότερων πελατών JOSM. Η δυνατότητα αυτή προστέθηκε με την έκδοση r8087. Παράδειγμα:
     822{{{
     823#!mapcss
     824@supports (min-josm-version: 9789) {
     825    way[highway] {
     826        width: 4;
     827        color: orange;
     828    }
     829    /* εντυπωσιακά νέα στοιχεία */
     830    /* ... */
     831}
     832
     833@supports (max-josm-version: 9788) {
     834    way[highway] {
     835        width: 4;
     836        color: blue;
     837    }
     838    /* εναλλακτική λειτουργία, χρήση με πιο απλά χαρακτηριστικά */
     839    /* ... */
     840}
     841
     842@supports (icon-offset-x) {
     843    /* μόνο αν υποστηρίζεται η ιδιότητα icon-offset-x */
     844    node[amenity] {
     845        icon-offset-x: 5;
     846    }
     847}
     848}}}
     849
     850Η σύνταξη ταιριάζει αρκετά με την επίσημη [https://drafts.csswg.org/css-conditional/ σύνταξη css]. Υποστηρίζονται οι ακόλουθες συνθήκες:
     851
     852{{{#!th
     853'''Συνθήκη'''
     854}}}
     855{{{#!th
     856'''Περιγραφή'''
     857}}}
     858|-
     859{{{#!td
     860(''<mapcsskey>'')
     861}}}
     862{{{#!td
     863Ελέγξτε αν υποστηρίζεται ένα συγκεκριμένο κλειδί mapcss, π.χ. `repeat-image` ή `icon-offset-x`.
     864}}}
     865|-
     866{{{#!td
     867(min-josm-version: ''<αριθμός>'')
     868}}}
     869{{{#!td
     870Συμπεριλάβετε την ενότητα `@supports` μόνο όταν η τρέχουσα έκδοση του JOSM είναι μεγαλύτερη ή ίση με τον καθορισμένο αριθμό.
     871}}}
     872|-
     873{{{#!td
     874(max-josm-version: ''<αριθμός>'')
     875}}}
     876{{{#!td
     877Συμπεριλάβετε την ενότητα `@supports` μόνο όταν η τρέχουσα έκδοση του JOSM είναι μικρότερη ή ίση με τον καθορισμένο αριθμό.
     878}}}
     879|-
     880{{{#!td
     881(user-agent: ''<κείμενο>'')
     882}}}
     883{{{#!td
     884Συμπεριλάβετε την ενότητα `@supports` μόνο όταν το όνομα του επεξεργαστή/αποκαταστάτης ταιριάζει με το δοσμένο κείμενο. Στο JOSM, η μοναδική αποδεκτή τιμή είναι `josm`.
     885}}}
     886
     887Οι συνθήκες μπορούν να συνδυαστούν με το `και`:
     888
     889{{{
     890#!mapcss
     891@supports (min-josm-version: 8087) and (max-josm-version: 8200) {
     892 /* μόνο για τις εκδόσεις JOSM 8087 έως 8200 */
     893}
     894}}}
     895
     896Και άλλοι λογικοί τελεστές όπως `or` και `not` μπορούν επίσης να χρησιμοποιηθούν. Οι παρενθέσεις είναι απαραίτητες εάν θέλετε να συνδυάσετε διαφορετικούς λογικούς τελεστές:
     897
     898{{{
     899#!mapcss
     900@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) {
     901  /* για την έκδοση JOSM 8087 έως 8200 και για τον επεξεργαστή που ονομάζεται "myEditor" */
     902}
     903}}}
     904
     905Επειδή οι κανόνες @supports υποστηρίζονται μόνο από το JOSM r8087 και νεότερες εκδόσεις, θα πρέπει επίσης να το ορίσετε ως ελάχιστη έκδοση JOSM στον επιλογέα μεταδεδομένων:
     906
     907{{{
     908#!mapcss
     909meta {
     910    min-josm-version: "8087"; /* Αυτό το στυλ χρησιμοποιεί κανόνες @supports */
     911    /* ... */
     912}
     913}}}
     914
     915
     916== Ρυθμίσεις Στυλ ==
     917Οι [wikitr:/Help/Dialog/MapPaint/StyleSettings ρυθμίσεις Στυλ] χρησιμοποιούνται για να παρέχουν στον χρήστη δυνατότητες παραμετροποίησης μιας τεχνοτροπίας βαφής χάρτη. Ο χρήστης μπορεί να τις χρησιμοποιήσει στον [wikitr:/Help/Dialog/MapPaint διάλογο  Τεχνοτροπίας Βαφής Χάρτη]. Διατίθενται οι ακόλουθοι `τύποι` ρυθμίσεων:
     918* `boolean` (από την έκδοση r7450)
     919* `double` (από την έκδοση r15731, δείτε #10435)
     920* `string` (από την έκδοση r15731, δείτε #10435)
     921* `color` (από την έκδοση r16843, δείτε #10435)
     922
     923=== Ρυθμίσεις τύπου `boolean` ===
     924Δημιουργία ρύθμισης τύπου `boolean`:
     925{{{
     926#!mapcss
     927setting::highway_casing {
     928  type: boolean;
     929  label: tr("Σχεδίαση περιγράμματος αυτοκινητόδρομου");
     930  default: true;
     931}
     932}}}
     933
     934Χρήση ρύθμισης τύπου `boolean`:
     935{{{
     936#!mapcss
     937way[highway][setting("highway_casing")] {
     938  casing-width: 2;
     939  casing-color: white;
     940}
     941}}}
     942
     943=== Ρυθμίσεις τύπου `double` ===
     944Δημιουργία ρύθμισης τύπου `double`:
     945{{{
     946#!mapcss
     947setting::place_font_size {
     948  type: double;
     949  label: tr("Ορισμός μεγέθους γραμματοσειράς για το όνομα τοποθεσίας...");
     950  default: 11;
     951}
     952}}}
     953
     954Χρήση ρύθμισης τύπου `double`:
     955{{{
     956#!mapcss
     957node.place, way.place, area.place {
     958  font-size: setting("place_font_size");
     959}
     960}}}
     961
     962=== Ρυθμίσεις τύπου `string` ===
     963Δημιουργία ρύθμισης τύπου `string`:
     964{{{
     965#!mapcss
     966setting::textdisplay {
     967  type: string;
     968  label: tr("κλειδί που χρησιμοποιείται για την εμφάνιση");
     969  default: "name"; /* παραδείγματα χρήσης: alt_name, old_name, addr:housename, ref, operator, ... */
     970}
     971}}}
     972
     973Χρήση ρύθμισης τύπου `string`:
     974{{{
     975#!mapcss
     976way {
     977  text: tag(setting("textdisplay"));
     978}
     979}}}
     980
     981=== Ρυθμίσεις τύπου `color` ===
     982Δημιουργία ρύθμισης τύπου `color`. Το `προεπιλεγμένο ` μπορεί να είναι οποιοδήποτε χρώμα αναγνωρίζεται σύμφωνα με τις [wikitr:/Help/Styles/MapCSSImplementation#Propertyvaluesexplanations επεξηγήσεις τιμών Ιδιοτήτων]:
     983{{{
     984#!mapcss
     985setting::colordisplay {
     986  type: color;
     987  label: tr("κλειδί που χρησιμοποιείται για την εμφάνιση");
     988  default: colorDisplayCustomPref#FF00FF;
     989}
     990}}}
     991
     992Χρήση ρύθμισης τύπου `color`:
     993{{{
     994#!mapcss
     995way {
     996  color: setting("colordisplay");
     997}
     998}}}
     999
     1000=== Ομαδοποίηση ρυθμίσεων ===
     1001Παρόμοιες ρυθμίσεις μπορούν να ομαδοποιηθούν με τον ορισμό ''ομάδων ρυθμίσεων'' (από την έκδοση r15289):
     1002
     1003{{{
     1004#!mapcss
     1005settings::my_group {
     1006  label: tr("η υπέροχη ομάδα μου");
     1007  icon: "my_beautiful_icon";
     1008}
     1009}}}
     1010
     1011Η ετικέτα είναι υποχρεωτική, το εικονίδιο είναι προαιρετικό.
     1012
     1013Μόλις οριστεί μια ομάδα ρυθμίσεων, μπορεί να γίνει αναφορά σε αυτήν από όλες τις ρυθμίσεις που ανήκουν σε αυτήν:
     1014
     1015{{{
     1016#!mapcss
     1017setting::hide_icons {
     1018  type: boolean;
     1019  label: tr("Απόκρυψη εικονιδίων σε χαμηλό ζουμ");
     1020  default: true;
     1021  group: "my_group";
     1022}
     1023}}}
     1024
     1025Οι ομάδες ρυθμίσεων εμφανίζονται ως υπομενού στο μενού ρυθμίσεων στυλ. Αν τουλάχιστον δύο ρυθμίσεις ανήκουν σε μια ομάδα, ένα ειδικό στοιχείο μενού "Εναλλαγή όλων των ρυθμίσεων" επιτρέπει την γρήγορη ενεργοποίηση/απενεργοποίηση όλων των ρυθμίσεων από αυτήν την ομάδα ταυτόχρονα. Παράδειγμα χρήσης:  [wikitr:/Styles/MapWithAI MapWithAI].
     1026
     1027
     1028== Ιδιότητες ==#Properties
     1029=== Γενικές ιδιότητες ===
     1030
     1031||=  '''Κλειδί''' =||= '''Περιγραφή''' =||= '''Μορφή Τιμής''' =||= '''Προεπιλεγμένη Τιμή''' =||
     1032|| `z-index` || Καθορίστε τη σειρά σχεδίασης των αντικειμένων: Τα αντικείμενα με υψηλότερο z-index σχεδιάζονται πάνω από αντικείμενα με χαμηλότερο z-index || ''Αριθμός'' (μπορεί να είναι αρνητικός) ||  0  ||
     1033|| `major-z-index` || Παρόμοιο με το `z-index`, αλλά έχει υψηλότερη προτεραιότητα από το `z-index`. Έτσι, εάν ένα αντικείμενο έχει υψηλότερο `major-z-index` από το άλλο, σχεδιάζεται πάνω. Εάν ο `major-z-index` είναι ο ίδιος, αποφασίζει ο `z-index`. || ''Αριθμός'' (μπορεί να είναι αρνητικός) || Εξαρτάται από το στοιχείο στυλ: 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 ||
     1034|| `object-z-index` || Παρόμοιο με το `z-index`, αλλά με χαμηλότερη προτεραιότητα. Ελέγχει τη σειρά σχεδίασης για επικαλυπτόμενα αντικείμενα. Παράδειγμα: Για δύο γραμμές που διασταυρώνονται και έχουν κείμενο: Χρησιμοποιήστε `z-index` ή `major-z-index` εάν θέλετε πρώτα να σχεδιάσετε τις δύο γραμμές και στη συνέχεια τις δύο λεζάντες. Χρησιμοποιήστε `object-z-index` εάν μία από τις γραμμές πρέπει να είναι εντελώς πάνω από την άλλη. || ''Αριθμός'' (μπορεί να είναι αρνητικός) ||  0  ||
     1035|| `modifier` || Καλύτερος έλεγχος για το αν θα δημιουργείται από το JOSM το προεπιλεγμένο σύμβολο γραμμής/κόμβου. Αυτό συμβαίνει όταν δεν βρίσκεται κατάλληλο στυλ (`modifier=false`) σε κανένα επίπεδο. || `false` ή `true` || `false` για την προεπιλεγμένο επίπεδο και `true` για οποιοδήποτε άλλο επίπεδο ||
     1036
     1037Σημειώστε ότι για λόγους απόδοσης οι τιμές για τα τρία z-indexes περιορίζονται σε αριθμούς κινητής υποδιαστολής 24-bit, με μέγιστο 5 δεκαδικά ψηφία. Προς το παρόν, το εσωτερικό στυλ βαφής χάρτη χρησιμοποιεί τιμές με μέγιστο 2 ψηφία πριν και μετά το δεκαδικό διαχωριστικό. Για να αποφύγετε προβλήματα, χρησιμοποιήστε τιμές z-indexes μεταξύ -99.999 και +99.999. (Δείτε επίσης #14485)
     1038
     1039=== Στυλ εικονιδίων και συμβόλων ===
     1040
     1041||=  '''Κλειδί''' =||= '''Περιγραφή''' =||= '''Μορφή Τιμής''' =||= '''Προεπιλεγμένη Τιμή''' =||
     1042|| `icon-image` || Το εικονίδιο στη θέση του κόμβου. Δείτε επίσης [wikitr:/Help/Styles/Images Εικόνες]. || ''Εικόνες'' ||  -  ||
     1043|| `icon-opacity` || Αδιαφάνεια της εικόνας του εικονιδίου || ''Αδιαφάνεια'' ||  1.0  ||
     1044|| `icon-width` || Πλάτος του εικονιδίου. Εάν δοθεί μόνο μία από τις ιδιότητες `icon-width` και `icon-height` η εικόνα θα κλιμακωθεί αναλογικά. Το εικονίδιο διατηρεί το αρχικό μέγεθος αν δεν οριστεί ούτε `icon-width` ούτε `icon-height`. || ''Αριθμός'' ||  -  ||
     1045|| `icon-height` || Ύψος του εικονιδίου. (Δείτε `icon-width`) || ''Αριθμός'' ||  -  ||
     1046|| `icon-offset-x` || Μετατόπιση του εικονιδίου σε οριζόντια κατεύθυνση (θετικές τιμές προς τα δεξιά) (από το r8085) || ''Αριθμός'' ||  0  ||
     1047|| `icon-offset-y` || Μετακίνηση του εικονιδίου σε κάθετη κατεύθυνση (θετικές τιμές προς τα κάτω) (από το r8085) || ''Αριθμός'' ||  0  ||
     1048|| `icon-rotation` || Περιστροφή του εικονιδίου δεξιόστροφα ή αριστερόστροφα (αρνητική τιμή)(από το r8260) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` ([https://developer.mozilla.org/en/docs/Web/CSS/angle ορισμός]) \\ ή μια βασική κατεύθυνση (π.χ. `northeast` ή `sw`); \\ ή `way` για να περιστρέψετε το εικονίδιο προς την κατεύθυνση της γονικής γραμμής. \\ Δείτε επίσης τις συναρτήσεις `degree_to_radians`, `cardinal_to_radians`. \\Από την έκδοση 18678, η συνάρτηση parent_way_angle() είναι μια εναλλακτική λύση για την γραμμή: π.χ. {{{ way > node[...]::layer_x { ... icon-rotation: parent_way_angle(); ... } }}}  ||  -  ||
     1049|| `icon-position` || Ορίστε τη θέση του εικονιδίου για περιοχές. Το ίδιο με `text-position` (από το r11730). || `center`, `inside`, `line` ||  `center`  ||
     1050|| `symbol-shape` || Εμφάνιση ενός συμβόλου στη θέση του κόμβου || `square`, `circle`, `triangle`, `pentagon`, `hexagon`, `heptagon`, `octagon`, `nonagon`, `decagon` ||  -  ||
     1051|| `symbol-size` || Μέγεθος του συμβόλου || Ο ''Αριθμός'', μπορεί να είναι σχετικός ("+4") ||  10  ||
     1052|| `symbol-stroke-width` || πλάτος περιγράμματος || ''Πλάτος '' || 1.0 εάν το `symbol-stroke-color` έχει οριστεί ||
     1053|| `symbol-stroke-color` || χρώμα γραμμής || ''Χρώμα'' || `#FFC800` εάν το `symbol-stroke-width` έχει οριστεί ||
     1054|| `symbol-stroke-opacity` || γραμμής αδιαφάνειας || ''Αδιαφάνεια'' ||  1.0  ||
     1055|| `symbol-fill-color` || χρώμα γεμίσματος του σχήματος || ''Χρώμα '' || `blue`, εκτός αν το `symbol-stroke-width` ή το `symbol-stroke-color` έχει οριστεί ||
     1056|| `symbol-fill-opacity` || χρώμα αδιαφάνειας || ''Αδιαφάνεια'' ||  1.0  ||
     1057|| `text-...`, `font-...` ||||||  δείτε τις γενικές '''ιδιότητες Κειμένου και Γραμματοσειράς''' ||
     1058
     1059Μην βασίζεστε στις προεπιλεγμένες τιμές για τις ιδιότητες `symbol-...` (εκτός από το `opacity`). Προορίζονται για "γρήγορα & πρόχειρα" στυλ και καλό είναι να ορίζονται σε μια σαφή τιμή.
     1060
     1061=== Στυλ γραμμής ===#LineStyles
     1062||=  '''Κλειδί''' =||= '''Περιγραφή''' =||= '''Μορφή Τιμής''' =||= '''Προεπιλεγμένη Τιμή''' =||
     1063|| `width` || Πλάτος γραμμής || ''Πλάτος'' ||  -  ||
     1064|| `color` || Χρώμα γραμμής || ''Χρώμα'' ||  τιμή του `fill-color` ή\\(αν δεν έχει οριστεί) το προεπιλεγμένο \\χρώμα του JOSM (`#808080`) ||
     1065|| `opacity` || Πόσο διαφανής είναι η γραμμή. || ''Αδιαφάνεια'' ||  1.0  ||
     1066|| `dashes` || Ένας πίνακας εναλλασσόμενων μηκών ενεργοποίησης/απενεργοποίησης || λίστα αριθμών, π.χ. \\> 15, 5 \\ \\μπορεί να γραφτεί ως έκφραση: \\ > `list(3, 4, 5, 6)` \\ \\ή η λέξη-κλειδί `none` \\για να απενεργοποιήσετε τις παύλες ||  -  ||
     1067|| `dashes-offset` || μετατοπίστε το μοτίβο παύλας κατά ένα ορισμένο ποσό || ''Αριθμός'' (>= 0) ||  0  ||
     1068|| `dashes-background-color` || Το χρώμα που θα χρησιμοποιηθεί ανάμεσα στις παύλες (προαιρετικό) || ''Χρώμα'' ||  -  ||
     1069|| `dashes-background-opacity` || Τιμή αδιαφάνειας για το φόντο των παυλών || ''Αδιαφάνεια'' ||  Τιμή  της αδιαφάνειας `opacity`  ||
     1070|| `linecap` || Σχήμα στο τέλος της γραμμής (δείτε [https://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty εδώ]) || `none`, `round`, `square` ||  `none`  ||
     1071|| `linejoin` || Σχήμα στις γωνίες της γραμμής || `round`, `miter`, `bevel` ||  `round`  ||
     1072|| `miterlimit` || Ισχύει για `linejoin: miter`. \\Ορίζει τη μέγιστη υπέρβαση όταν τα τμήματα γραμμής συναντώνται σε πολύ μικρή γωνία || ''Αριθμός'' (>= 1.0) ||  10.0  ||
     1073|| `offset` || Μετακίνηση γραμμής προς τα αριστερά ή τα δεξιά (όταν κοιτάτε προς την κατεύθυνση της διαδρομής). \\Αυτό θα μπορούσε να χρησιμοποιηθεί για να σχεδιάσετε πολλαπλές λωρίδες για μία κατεύθυνση ή να επισημάνετε την αριστερή και τη δεξιά πλευρά μιας διαδρομής διαφορετικά. || ''Αριθμός'' (θετική τιμή μετακινεί τη γραμμή προς τα αριστερά,\\αρνητική προς τα δεξιά) ||  0  ||
     1074|| `text-position` || ορισμός σε `line`, αν το κείμενο πρέπει να σχεδιαστεί κατά μήκος της γραμμής || `line`, `center` ||  -  ||
     1075|| `text-...`,\\`font-...` |||||| δείτε γενικές '''ιδιότητες Κειμένου και Γραμματοσειράς  ||
     1076|| `repeat-image` || επαναλαμβανόμενη εικόνα κατά μήκος μιας γραμμής ''(από την έκδοση r5801)'' || ''Εικόνα'' ||  -  ||
     1077|| `repeat-image-width` || Πλάτος της εικόνας (προαιρετικό, δείτε το `icon-width`) ''(από την έκδοση r5811)'' || ''Αριθμός'' ||  -  ||
     1078|| `repeat-image-height` || Ύψος της εικόνας (προαιρετικό) ''(από την έκδοση r5811)'' || ''Αριθμός'' ||  -  ||
     1079|| `repeat-image-align` || Στοίχιση της εικόνας.\\Η επάνω, κάτω άκρη ή η (οριζόντια) κεντρική γραμμή της εικόνας θα είναι κατά μήκος της γραμμής ''(από την έκδοση r5801)'' || `top`, `center`, `bottom` ||  `center`  ||
     1080|| `repeat-image-offset` || Μετατόπιση από τη γραμμή ''(από την έκδοση r5801)'' || ''Αριθμός'' ||  0  ||
     1081|| `repeat-image-spacing` || Απόσταση μεταξύ επαναλαμβανόμενων εικόνων ''(από την έκδοση r5801)'' || ''Αριθμός'' ||  0  ||
     1082|| `repeat-image-phase` || Αρχική απόσταση στην αρχή της γραμμής ''(από την έκδοση r5812)'' || ''Αριθμός'' ||  0  ||
     1083|| `repeat-image-opacity` || Αδιαφάνεια της επαναλαμβανόμενης εικόνας ''(από την έκδοση r16700)'' || ''Αριθμός'' ||  1.0  ||
     1084
     1085Όλες αυτές οι ιδιότητες (εκτός από το `text-...` και το `font-...`) υπάρχουν επίσης με το πρόθεμα `casing-`. Το casing είναι ένα δεύτερο, ανεξάρτητο στοιχείο γραμμής που σχεδιάζεται κάτω από την κανονική γραμμή και μπορεί να χρησιμοποιηθεί για να σχεδιάσουμε ένα λεπτό περίγραμμα γύρω από τη γραμμή με άλλο χρώμα.
     1086
     1087||=  '''Κλειδί''' =||= '''Περιγραφή''' =||= '''Μορφή Τιμής''' =||= '''Προεπιλεγμένη Τιμή''' =||
     1088|| `casing-width` || Πλάτος του περιγράμματος και στις δύο πλευρές της κύριας γραμμής. \\Στο JOSM < 5214: Συνολικό πλάτος του περιγράμματος || ''Πλάτος '' (αναφέρεται στο `width` αν έχει οριστεί σχετικό πλάτος) ||  -  ||
     1089|| `casing-color` || Χρώμα περιγράμματος || ''Χρώμα'' ||  Τιμή του `fill-color` ή (αν δεν έχει οριστεί) \\το προεπιλεγμένο χρώμα του JOSM για μη επισημασμένα αντικείμενα (`#808080`) ||
     1090|| `casing-opacity` || Πόσο διαφανές είναι το περίγραμμα. || ''Αδιαφάνεια'' ||  1.0  ||
     1091|| `casing-`... || ... || ... ||  ...  ||
     1092Παρόμοια με το `casing-`, υπάρχει επίσης το πρόθεμα `left-casing-` και το `right-casing-`. Σχεδιάζει επιπλέον γραμμές αριστερά και δεξιά της κύριας γραμμής.
     1093
     1094=== Στυλ περιοχής ===#AreaStyles
     1095||= '''Κλειδί''' =||= '''Περιγραφή''' =||= '''Μορφή Τιμής''' =||= '''Προεπιλεγμένη Τιμή''' =||
     1096|| `fill-color` || Χρώμα με το οποίο θα γεμίσει η περιοχή. Μέχρι το 11700, το στοιχείο άλφα είχε οριστεί σε 50 για να δημιουργήσει ένα εφέ διαφάνειας. || ''Χρώμα'' ||  -  ||
     1097|| `fill-image` || Μοτίβο εικόνας || ''Εικόνα'' ||  -  ||
     1098|| `fill-extent` || Ορίστε αυτήν την ιδιότητα, για να σχεδιάσετε μόνο το περίγραμμα της περιοχής. Ο αριθμός καθορίζει πόσο μακριά θα γεμίσει από το περίγραμμα της περιοχής προς το κέντρο. (Εάν δεν οριστεί, η περιοχή θα γεμίσει πλήρως) ''(από την έκδοση r9008)'' || ''Αριθμός'' ||  -  ||
     1099|| `fill-extent-threshold` || Ορίστε αυτήν την ιδιότητα, για να σχεδιάσετε ολόκληρη την περιοχή όταν επιτευχθεί το δεδομένο ποσοστό κάλυψης. Μπορεί να είναι μεγαλύτερο από 100% καθώς η καλυμμένη περιοχή εκτιμάται ως **περίμετρος * έκταση**. || ''Αριθμός'' ||  -  ||
     1100|| `fill-opacity` || Πόσο διαφανές είναι το γέμισμα; ισχύει τόσο για το χρώμα όσο και για την εικόνα || ''Αδιαφάνεια'' || 0.2 ''(από την έκδοση r11700, 1.0 πριν από αυτό)'' \\(μπορεί να αλλάξει με τις προτιμήσεις `mappaint.fillalpha` και \\`mappaint.fill-image-alpha`)  ||
     1101|| `text-position` || Ορίστε στο `center`, εάν το κείμενο πρέπει να σχεδιαστεί στο κέντρο της περιοχής. Ορίστε στο `inside` για να τοποθετήσετε το κείμενο εντελώς μέσα στην περιοχή. ''(από την έκδοση r11722)'' || `line`, `center`, `inside` ||  -  ||
     1102|| `text-...`, `font-...` ||||||  δείτε γενικές ιδιότητες κειμένου και γραμματοσειράς  ||
     1103Απαιτούμενες ιδιότητες για τη δημιουργία ενός στυλ Περιοχής: `fill-color` ή `fill-image`
     1104
     1105=== Ιδιότητες Κειμένου και Γραμματοσειράς ===
     1106{{{#!th valign=top
     1107'''Κλειδί'''
     1108}}}
     1109{{{#!th valign=top
     1110'''Περιγραφή'''
     1111}}}
     1112{{{#!th valign=top
     1113'''Μορφή Τιμής'''
     1114}}}
     1115{{{#!th valign=top
     1116'''Προεπιλεγμένη Τιμή'''
     1117}}}
     1118|-------------------------------------------------------------------------------
     1119{{{#!td align=left  valign=top
     1120`text` 
     1121}}}
     1122{{{#!td align=left  valign=top
     1123Πώς να βρείτε το κείμενο της ετικέτας.\\Δεν εμφανίζεται ετικέτα, εκτός εάν υπάρχει αυτή η εντολή.
     1124}}}
     1125{{{#!td align=left  valign=top
     1126`auto`
     1127  Αυτόματη εξαγωγή του κειμένου. Οι προεπιλεγμένες ετικέτες ονόματος είναι: "`name:`"+''<LANG>'', \\"`name`", "`int_name`", "`ref`", "`operator`", "`brand`" και "`addr:housenumber`".
     1128
     1129  Διαμορφώστε μια λίστα ονομάτων ετικετών στην προτίμηση "`mappaint.nameOrder`"  \\ για να
     1130αλλάξετε αυτήν τη λίστα. (Μετά την αλλαγή της λίστας, απαιτείται επανεκκίνηση του JOSM.)
     1131
     1132''String''
     1133  Δηλώνει το κλειδί της ετικέτας της οποίας η τιμή χρησιμοποιείται ως κείμενο.
     1134
     1135''Expressions''
     1136  Μπορείτε να εισαγάγετε μια έκφραση για να υπολογίσετε το κείμενο που θα εμφανιστεί. Παραδείγματα:
     1137  * `eval("this is a static text")` - αποδίδει ένα στατικό κείμενο
     1138  * `eval(concat(tag("first"), "-", tag("second")))` - εμφανίζει \\ τις συνενωμένες ετικέτες "first" και "second"
     1139
     1140`""`
     1141   Για να διαγράψετε ένα προηγούμενο σύνολο κειμένου.
     1142}}}
     1143{{{#!td align=center  valign=top
     1144-
     1145}}}
     1146|-------------------------------------------------------------------------------
     1147|| `text-color` || το χρώμα κειμένου || ''Χρώμα'' ||  `white` για γραμμές και κόμβους,\\`#c0c0c0` για περιοχές \\(JOSM "`text`" και"`areatext`"\\προτιμήσεις χρώματος) ||
     1148|| `text-opacity` || πόσο διαφανές είναι το κείμενο || ''Αδιαφάνεια'' ||  1.0  ||
     1149|| `text-offset-x` || μετατόπιση του κειμένου οριζόντια, \\(δεν υποστηρίζεται για κείμενο κατά μήκος της γραμμής) || ''Αριθμός'' ||  0  ||
     1150|| `text-offset-y`\\(μπορεί επίσης να γραφτεί ως\\`text-offset`)  || μετατόπιση του κειμένου κατακόρυφα, οι θετικές τιμές μετατοπίζουν το κείμενο στην προς τα πάνω κατεύθυνση  || ''Αριθμός'' ||  0  ||
     1151|| `text-halo-radius` || μέγεθος περιγράμματος φόντου κειμένου \\(για να γίνει το κείμενο ορατό στο φόντο \\με παρόμοιο χρώμα) || ''Αριθμός'' ||  -  ||
     1152|| `text-halo-color` || χρώμα περιγράμματος κειμένου || ''Χρώμα'' ||  συμπλήρωμα του χρώματος κειμένου  ||
     1153|| `text-halo-opacity` || διαφάνεια για το περίγραμμα κειμένου || ''Αδιαφάνεια'' ||  1.0  ||
     1154|| `text-anchor-horizontal` || οριζόντια τοποθέτηση ετικέτας κειμένου || `left`, `center`, `right` ||  `right`  ||
     1155|| `text-anchor-vertical` || Κατακόρυφη τοποθέτηση ετικέτας κειμένου || `above`, `top`, `center`, `bottom`, `below` ||  `bottom`  ||
     1156|| `text-rotation` || Περιστροφή του κειμένου δεξιόστροφα ή αριστερόστροφα (αρνητική τιμή)\\(από την έκδοση r16253) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` \\([https://developer.mozilla.org/en/docs/Web/CSS/angle ορισμός]) ή μια βασική κατεύθυνση (π.χ. `northeast` ή `sw`); \\ ή `way` για να περιστρέψετε το κείμενο προς την κατεύθυνση της γονικής γραμμής. \\Δείτε επίσης τις συναρτήσεις `degree_to_radians`, `cardinal_to_radians`. \\Από την έκδοση 18678, η συνάρτηση parent_way_angle() είναι μια εναλλακτική λύση για το way: π.χ. {{{ way > node[...]::layer_x { ... text-rotation: parent_way_angle(); ... } }}} \\(Σημειώστε ότι η κατεύθυνση σημαίνει το σημείο όπου βλέπει το πάνω άκρο του κειμένου.\\Αυτό σημαίνει ότι με την προεπιλεγμένη κατεύθυνση του βορρά το κείμενο ρέει προς τα ανατολικά\\(με γλώσσα από αριστερά προς τα δεξιά). \\Επομένως, αν θέλετε να ρέει π.χ. προς τα νότια, πρέπει να ορίσετε την ανατολή.) ||  -  ||
     1157|| `text-position` |||||| δείτε [https://josm.openstreetmap.de/wiki/El%3AHelp/Styles/MapCSSImplementation#AreaStyles Στυλ περιοχής] και [https://josm.openstreetmap.de/wiki/El%3AHelp/Styles/MapCSSImplementation#LineStyles Στυλ γραμμής] ||
     1158|| `font-family` || οικογένεια γραμματοσειράς || ''Γραμματοσειρά'' ||  "Droid Sans" \\(προτίμηση JOSM "`mappaint.font`")  ||
     1159|| `font-size` || μέγεθος γραμματοσειράς || ''Αριθμός'' ||  8 \\(προτίμηση JOSM "`mappaint.fontsize`")  ||
     1160|| `font-weight` || έντονα γράμματα ή όχι || `bold`, `normal` ||  `normal`  ||
     1161|| `font-style` || πλάγια γράμματα ή όχι || `italic`, `normal` ||  `normal`  ||
     1162
     1163=== Ιδιότητες ορισμένες από τον χρήστη ===
     1164* Στις [wikitr:/Styles Τεχνοτροπίες Βαφής Χαρτη] πορείτε να ορίσετε οποιαδήποτε προσαρμοσμένη ιδιότητα, π.χ.: `crc: CRC32_checksum(tag(name))/429496.7296;`
     1165* Στους [wikitr:/Rules κανόνες Επικύρωσης] πρέπει να έχουν πρόθεμα `-`, π.χ.: `-osmoseItemClassLevel: "1210/1/1";`
     1166
     1167=== Επεξηγήσεις τιμών ιδιοτήτων === #Propertyvaluesexplanations
     1168'' '''Width''' ''
     1169 - 14.0 (οποιοσδήποτε θετικός αριθμός)
     1170 - `default` (χρήση του προεπιλεγμένου πλάτους γραμμής του JOSM, το οποίο είναι 2, αλλά μπορεί να ρυθμιστεί)
     1171 - `thinnest` (σχεδιάζει τη γραμμή όσο το δυνατόν πιο λεπτή)
     1172 - +3 (με το σύμβολο συν μπροστά) προσθέτει την ποσότητα στο πλάτος στο προεπιλεγμένο επίπεδο. Αυτό ισχύει μόνο για στυλ που δεν βρίσκονται στο προεπιλεγμένο επίπεδο, π.χ. highlights. Ένας άλλος τρόπος για να το γράψετε αυτό θα ήταν `prop("width","default")+3`. Για το `casing-width`, αυτό αναφέρεται στην τιμή `width` στο ίδιο επίπεδο.
     1173
     1174'' '''Image''' ''
     1175 Δείτε στις [https://josm.openstreetmap.de/wiki/Help/Styles/Images/ Εικόνες].
     1176
     1177'' '''Color''' ''
     1178 * ονομασμένο χρώμα όπως αναφέρεται σε [https://www.w3.org/TR/css3-color/#svg-color αυτή] τη λίστα
     1179 * στυλ html: '''`#RRGGBB`''', '''`#RGB`''', '''`#RRGGBBAA`'''
     1180 * '''`rgb(/*r*/, /*g*/, /*b*/)`''' - τιμή rgb με ορίσματα από 0.0 έως 1.0
     1181 * '''`rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)`''' - τιμή rgb με άλφα
     1182 * '''`hsb_color(/*hue*/, /*saturation*/, /*brightness*/)`''' - χρώμα από το χρωματικό χώρο HSB
     1183 * αν το χρώμα έχει πρόθεμα με όνομα και #, π.χ. `color: highway_track#6e541c;` τότε θα εμφανιστεί στις [wikitr:/Help/Preferences/ColorPreference Ρυθμίσεις Χρώματος] και οι τελικοί χρήστες μπορούν να το προσαρμόσουν μόνοι τους
     1184
     1185'' '''Opacity''' ''
     1186 * από 0.0 (διαφανές) έως 1.0 (αδιαφανές)
     1187
     1188'' '''String''' ''
     1189 * οποιαδήποτε ακολουθία χαρακτήρων, σε εισαγωγικά, π.χ. `"images/fill.png"`. Αν η συμβολοσειρά είναι αναγνωριστικό, τα εισαγωγικά είναι προαιρετικά. (Το σύμβολο εισαγωγικών και η ανάποδη κάθετος μπορούν να έχουν χαρακτήρα διαφυγής.)
     1190
     1191'' '''Number''' ''
     1192 * ακέραιος ή κινητή υποδιαστολή (σε απλή μορφή π.χ. 0.3). Γενικά, μπορεί να είναι αρνητικός, αλλά οι περισσότερες ιδιότητες δεν υποστηρίζουν αρνητικούς αριθμούς
     1193 * έχει ειδική σημασία εάν βάλετε ένα σύμβολο "+" μπροστά (σχετικό πλάτος)
     1194
     1195
     1196== Εκφράσεις αξιολόγησης ==#Evalexpressions
     1197Δείτε το [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#method_summary Javadoc of Functions] για την ενημερωμένη λίστα συναρτήσεων που υποστηρίζει η υλοποίηση MapCSS του JOSM.
     1198
     1199 +, -, *, /::
     1200  αριθμητικές πράξεις
     1201 ||, &&, !::
     1202  λογικές πράξεις
     1203 <, >, <=, >=, ==, !=::
     1204  πράξεις σύγκρισης
     1205 asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (από το r17759), random, round, signum, sin, sinh, sqrt, tan, tanh::
     1206  η συνήθης έννοια, [https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Math.html λεπτομέρειες]
     1207 cond(b, fst, snd)::
     1208 b ? fst : snd::
     1209  εάν ('''b''') τότε '''fst''' αλλιώς '''snd'''
     1210 list(a, b, ...)::
     1211  δημιουργία λίστας τιμών, π.χ. για την ιδιότητα `dashes`
     1212 get(lst, n)::
     1213  λήψη του ''n''οστού στοιχείου της λίστας ''lst'' (η μέτρηση ξεκινά από το 0) [''από το r5699'']
     1214 split(sep, str)::
     1215  διαιρεί τη συμβολοσειρά ''str'' σε εμφανίσεις της διαχωριστικής συμβολοσειράς ''sep'', επιστρέφει μια λίστα [''από το r5699'']
     1216 prop(''p_name'')::
     1217  τιμή της ιδιότητας ''p_name'' του τρέχοντος επιπέδου, π.χ. prop(`"width"`)
     1218 prop(''p_name'', ''layer_name'')::
     1219  ιδιότητα από το επίπεδο ''layer_name''
     1220 is_prop_set(''p_name'')::
     1221  true, αν η ιδιότητα ''p_name''  έχει οριστεί για το τρέχων επίπεδο
     1222 is_prop_set(''p_name'', ''layer_name'')::
     1223  true, αν η ιδιότητα ''p_name'' έχει οριστεί για το επίπεδο ''layer_name''
     1224 tag(''key_name'')::
     1225  λήψη της τιμής του κλειδιού ''key_name'' από το συγκεκριμένο αντικείμενο
     1226 parent_tag(''key_name'')::
     1227  λήψη της τιμής του κλειδιού ''key_name'' από το γονικό αντικείμενο
     1228 parent_tags(''key_name'')::
     1229  επιστρέφει όλες τις τιμές των γονέων για το κλειδί ''key_name'' ως λίστα ταξινομημένη με φυσική σειρά [''από το r8775'']
     1230 has_tag_key(''key_name'')::
     1231  true, αν το αντικείμενο έχει μια ετικέτα με το δεδομένο κλειδί
     1232 rgb(''r'', ''g'', ''b'')::
     1233  δημιουργία τιμής χρώματος (ορίσματα από 0.0 έως 1.0)
     1234 hsb_color(''h'', ''s'', ''b'')::
     1235  δημιουργία χρώματος από απόχρωση, κορεσμό και φωτεινότητα (ορίσματα από 0.0 έως 1.0) [''από το r6899'']
     1236 red(''clr''), green(''clr''), blue(''clr'')::
     1237  λήψη τιμής των καναλιών χρώματος στο μοντέλο χρωμάτων rgb
     1238 alpha(''clr'')::
     1239  λήψη της τιμής άλφα του δεδομένου χρώματος [''από το r6749'']
     1240 length(''str'')::
     1241  μήκος μιας συμβολοσειράς
     1242 count(''lst'')::
     1243  μήκος μιας λίστας, δηλαδή, μετράει τα στοιχεία της [''από το r7162'']
     1244 length(''lst'')::
     1245  μήκος μιας λίστας ([''από το r5699''] – έχει καταργηθεί ''από το r7162''
     1246 any(obj1, obj2, ...)::
     1247  επιστρέφει το πρώτο αντικείμενο που δεν είναι null (παλιότερα ονομαζόταν coalesce, [''από το r7164''])
     1248 concat(''str1'', ''str2'', ...)::
     1249  συνενώνει πολλές συμβολοσειρές σε μία
     1250 join(''sep'', ''str1'', ''str2'', ...)::
     1251  συνενώνει συμβολοσειρές, χρησιμοποιώντας το ''sep'' ως διαχωριστικό [''since r6737'']
     1252 join_list(''sep'', ''list_name'')::
     1253   συνενώνει τα στοιχεία της λίστας ''list_name'' σε μία συμβολοσειρά, με διαχωριστικό ''sep'' [''από το r8775'']
     1254 upper(''str'')::
     1255   μετατρέπει τη συμβολοσειρά σε κεφαλαία γράμματα [''από το r11756'']
     1256 lower(''str'')::
     1257   μετατρέπει τη συμβολοσειρά σε πεζά γράμματα [''από το r11756'']
     1258 title(''str'')::
     1259   μετατρέπει τη συμβολοσειρά σε κεφαλαία γράμματα τίτλου [''από το r17613''] (`"i am FINE"` → `"I Am Fine"`)
     1260 trim(''str'')::
     1261   αφαιρεί τα αρχικά και τα τελικά κενά από τη συμβολοσειρά [''από το r11756'']
     1262 trim_list(''list_name'')::
     1263   αφαιρεί τα αρχικά και τα τελικά κενά από μια λίστα συμβολοσειρών, θα αφαιρέσει τις καταχωρήσεις που είναι κενές στη συνέχεια [''από το r15591'']
     1264 JOSM_search("...")::
     1265  true, εάν η αναζήτηση JOSM εφαρμόζεται στο αντικείμενο
     1266 tr(str, arg0, arg1, ...)::
     1267  μεταφράζει από τα Αγγλικά στην τρέχουσα γλώσσα (μόνο για συμβολοσειρές στη διεπαφή χρήστη JOSM) [''από το r6506'']
     1268 regexp_test(regexp, string)::
     1269  ελέγχει εάν το ''string'' ταιριάζει με το μοτίβο ''regexp'' [''από το r5699'']
     1270 regexp_test(regexp, string, flags)::
     1271  ελέγχει εάν το ''string'' ταιριάζει με το μοτίβο ''regexp''; το είναι μια συμβολοσειρά που μπορεί να περιέχει "i" (δεν διακρίνει πεζά-κεφαλαία), "m" (πολλαπλών γραμμών) και "s" ("όλες οι τελείες") [''από το r5699'']
     1272 regexp_match(regexp, string)::
     1273  Προσπαθεί να ταιριάξει το ''string'' με το μοτίβο ''regexp''. Επιστρέφει μια λίστα ομάδων καταγραφής σε περίπτωση επιτυχίας. Το πρώτο στοιχείο (δείκτης 0) είναι η πλήρης αντιστοίχιση (δηλαδή, ''string''). Περαιτέρω στοιχεία αντιστοιχούν στα μέρη της κανονικής έκφρασης που βρίσκονται σε αγκύλες. [''από το r5701'']
     1274 regexp_match(regexp, string, flags)::
     1275  Προσπαθεί να ταιριάξει το ''string'' με το μοτίβο ''regexp''. Επιστρέφει μια λίστα ομάδων καταγραφής σε περίπτωση επιτυχίας. Το πρώτο στοιχείο (δείκτης 0) είναι η πλήρης αντιστοίχιση (δηλαδή, ''string''). Περαιτέρω στοιχεία αντιστοιχούν στα μέρη της κανονικής έκφρασης που βρίσκονται σε αγκύλες. Το flags είναι μια συμβολοσειρά που μπορεί να περιέχει τα "i" (χωρίς διάκριση πεζών-κεφαλαίων), "m" (πολλαπλών γραμμών) και το "s" ("όλες οι τελείες") [''από το r5701'']
     1276 substring(str, idx)::
     1277  επιστρέφει τη δευτερεύουσα συμβολοσειρά του ''str'', ξεκινώντας από τον δείκτη ''idx'' (με δείκτη 0) [''από το r6534'']
     1278 substring(str, start, end)::
     1279  επιστρέφει τη δευτερεύουσα συμβολοσειρά του ''str'', ξεκινώντας από τον δείκτη ''start'' (συμπεριλαμβανομένου) έως το ''end'' (εκτός) (με δείκτη 0) [''από το r6534''], ένας αρνητικός δείκτης end μετράει από το τέλος της συμβολοσειράς [''από το r19259'']
     1280 replace(string, old, new)::
     1281   Αντικαθιστά οποιαδήποτε εμφάνιση της δευτερεύουσας συμβολοσειράς ''old'' μέσα στη συμβολοσειρά ''string'' με το κείμενο ''new''
     1282 osm_id()::
     1283  επιστρέφει το OSM id του τρέχοντος [''από το r5699'']
     1284 osm_user_name()::
     1285  επιστρέφει το όνομα χρήστη OSM που τροποποίησε τελευταίο το τρέχον αντικείμενο [''από το r15246'']
     1286 osm_user_id()::
     1287  επιστρέφει το id χρήστη OSM που τροποποίησε τελευταίο το τρέχον αντικείμενο [''από το r15246'']
     1288 osm_version()::
     1289  επιστρέφει τον αριθμό έκδοσης OSM του τρέχοντος αντικειμένου [''από το r15246'']
     1290 osm_changeset_id()::
     1291  επιστρέφει το id του συνόλου αλλαγών στο οποίο μεταφορτώθηκε τελευταία φορά το τρέχον αντικείμενο [''από το r15246'']
     1292 osm_timestamp()::
     1293  επιστρέφει τον χρόνο της τελευταίας τροποποίησης του τρέχοντος αντικειμένου, ως χρονική σφραγίδα [''από το r15246'']
     1294 parent_osm_id()::
     1295  επιστρέφει το OSM id του γονικού αντικειμένου (που ταιριάζει με τον επιλογέα θυγατρικών)  [''από το r13094'']
     1296 URL_encode(str)::
     1297  κωδικοποιεί μια συμβολοσειρά σε μορφή [https://en.wikipedia.org/wiki/Percent-encoding percent-encode]. Χρήσιμο για δεδομένα σε URL [''από το r6805'']
     1298 URL_decode(str)::
     1299  αποκωδικοποιεί μια συμβολοσειρά σε μορφή [https://en.wikipedia.org/wiki/Percent-encoding percent-decode]. [''από το r11756'']
     1300 XML_encode(str)::
     1301  αντικαθιστά ειδικούς χαρακτήρες σε xml. Π.χ. το `<` γίνεται `&lt;`, άλλοι ειδικοί χαρακτήρες: `>`, `"`, `'`, `&`, `\n`, `\t` και `\r` [''από το r6809'']
     1302 CRC32_checksum(''str'')::
     1303  υπολογίζει το άθροισμα ελέγχου CRC32 μιας συμβολοσειράς (το αποτέλεσμα είναι ακέραιος από 0 έως 2^32^-1) [''από το r6908'']
     1304 siunit_length(''str'')::
     1305   μετατρέπει μονάδες μήκους σε μέτρα (ανεκτικό σε σφάλματα, αγνοεί τα κενά) [''από το r19089'']
     1306 is_right_hand_traffic()::
     1307  ελέγχει αν στην τρέχουσα τοποθεσία ισχύει κυκλοφορία δεξιάς ή αριστερής κατεύθυνσης. [''από το r7193'']
     1308 number_of_tags()::
     1309  επιστρέφει τον αριθμό ετικετών του τρέχοντος αντικειμένου OSM [''από το r7237'']
     1310 print(o)::
     1311  εκτυπώνει μια αναπαράσταση του `o` στη γραμμή εντολών (για εντοπισμό σφαλμάτων) [''από το r7237'']
     1312 println(o)::
     1313  εκτυπώνει μια αναπαράσταση του `o` στη γραμμή εντολών, ακολουθούμενη από μια νέα γραμμή (για εντοπισμό σφαλμάτων) [''από το r7237'']
     1314 JOSM_pref(''key'', ''default'')::
     1315  Λήψη τιμής από τις προηγμένες προτιμήσεις του JOSM. Με αυτόν τον τρόπο μπορείτε να προσφέρετε ορισμένες επιλογές στον χρήστη και να κάνετε το στυλ προσαρμόσιμο. Λειτουργεί με συμβολοσειρές, αριθμούς, χρώματα και τιμές boolean. \\[Η συνάρτηση αυτή υπάρχει από την έκδοση r3856, αλλά με ορισμένους περιορισμούς. Το `JOSM_pref` επιστρέφει πάντα συμβολοσειρά, αλλά στην έκδοση r7237 και παλαιότερες, η αυτόματη μετατροπή συμβολοσειράς σε boolean και χρώμα δεν λειτουργούσε. Μπορείτε να χρησιμοποιήσετε τις εξής λύσεις για boolean και χρώμα σε r7237 και παλαιότερες: `cond(JOSM_pref("myprefkey", "true")="true", "X", "O")` και `html2color(JOSM_pref("mycolor", "#FF345611"))`. Αυτές οι σαφείς μετατροπές δεν θα πρέπει πλέον να είναι απαραίτητες στην έκδοση r7238 και νεότερες. Η αυτόματη μετατροπή σε αριθμό λειτουργεί σε οποιαδήποτε έκδοση. Επιπλέον, στην έκδοση r16590, μπορεί να χρησιμοποιηθεί για τον ορισμό ιδιοτήτων χρώματος. Έτσι το `* { set_color: JOSM_pref("pref", #000000); }` θα δημιουργήσει τώρα μια ιδιότητα χρώματος.]
     1316 setting()::
     1317  για χρήση μιας [wikitr:/Help/Styles/MapCSSImplementation#Stylesettings ρύθμισης στυλ] [''από το r7450'']
     1318 degree_to_radians()::
     1319  επιστρέφει την κατεύθυνση σε ακτίνα δοσμένη σε μοίρες [''από το r8260'']
     1320 cardinal_to_radians()::
     1321  επιστρέφει μια κατεύθυνση στον ορίζοντα σε ακτίνα [''από το r8260'']
     1322 waylength()::
     1323  επιστρέφει το μήκος της γραμμής σε μέτρα [''από το r8253'']
     1324 areasize()::
     1325  επιστρέφει το εμβαδόν μιας κλειστής γραμμής σε τετραγωνικά μέτρα [''από το r8253'']
     1326 at(lat,lon)::
     1327  επιστρέφει true αν το κεντροϊδές του αντικειμένου βρίσκεται στις δοσμένες συντεταγμένες ''lat''/''lon'', e.g. π.χ. για έλεγχο κόμβων στο "null island" `node[at(0.0,0.0)]` [''από το r12514'']
     1328 is_similar(''str1'', ''str2'')::
     1329  επιστρέφει true αν οι δύο συμβολοσειρές είναι παρόμοιες, αλλά όχι ταυτόσημες, δηλαδή έχουν απόσταση Levenshtein 1 ή 2. Παράδειγμα: `way[highway][name][is_similar(tag(name), "Main Street")]` ελέγχει για δρόμους με πιθανό τυπογραφικό λάθος στο όνομα (π.χ. Main Streeg). [''από το r14371'']
     1330 gpx_distance()::
     1331  επιστρέφει τη μικρότερη απόσταση μεταξύ του αντικειμένου OSM και ενός σημείου GPX [''από το r14802'']
     1332 count_roles()::
     1333  επιστρέφει τον αριθμό των πρωταρχικών σε μια σχέση με τους καθορισμένους ρόλους [''από το r15275'']
     1334 sort(''str1'', ''str2'', ''str3'', ''...'')::
     1335  ταξινομεί έναν πίνακα συμβολοσειρών [''από το r15279'']
     1336 sort_list(''list_name'')::
     1337  ταξινομεί μια λίστα συμβολοσειρών [''από το r15279'']
     1338 tag_regex(''regex'')::
     1339  επιστρέφει λίστα που περιέχει τις τιμές των κλειδιών που ταιριάζουν με το regex  [''since r15317'']
     1340 to_boolean(''str'')::
     1341  επιστρέφει το όρισμα συμβολοσειράς ως boolean [''από το r16110'']
     1342 to_byte(''str'')::
     1343  επιστρέφει το όρισμα συμβολοσειράς ως byte [''από το r16110'']
     1344 to_short(''str'')::
     1345  επιστρέφει το όρισμα συμβολοσειράς ως short [''από το r16110'']
     1346 to_int(''str'')::
     1347  επιστρέφει το όρισμα συμβολοσειράς ως int [''από το r16110'']
     1348 to_long(''str'')::
     1349  επιστρέφει το όρισμα συμβολοσειράς ως long [''από το r16110'']
     1350 to_float(''str'')::
     1351  επιστρέφει το όρισμα συμβολοσειράς ως float [''από το r16110'']
     1352 to_double(''str'')::
     1353  επιστρέφει το όρισμα συμβολοσειράς ως double [''από το r16110'']
     1354 uniq(''str1'', ''str2'', ''str3'', ''...'')::
     1355  επιστρέφει λίστα συμβολοσειρών με μοναδικές τιμές από έναν πίνακα συμβολοσειρών [''από το r15323'']
     1356 uniq_list(''list_name'')::
     1357  επιστρέφει λίστα συμβολοσειρών με μοναδικές τιμές από μια λίστα συμβολοσειρών [''από το r15323'']
     1358 parent_way_angle()::
     1359  επιστρέφει τη γωνία της γονικής γραμμής ως αριθμό double σε ακτίνα [''από το r18664''] (δείτε: text-rotation ή icon-rotation)
     1360 convert_primitive_to_string(''PrimitiveId'')::
     1361  επιστρέφει το ID του πρωταρχικού ως συμβολοσειρά [''από το r18829'']
     1362 convert_primitives_to_string(''PrimitiveId'', ''PrimitiveId'', ''...'')::
     1363  επιστρέφει λίστα πρωταρχικών IDs που έχουν μετατραπεί σε συμβολοσειρές [''από το r18829'']
     1364 parent_osm_primitives(''optional key'', ''optional value'')::
     1365  επιστρέφει λίστα πρωταρχικών IDs που ταιριάζουν με το κλειδί και την τιμή (αν δοθούν) [''από το r18829'']
     1366
     1367=== Παραδείγματα ===
     1368* σύμβολο κύκλου για τον αριθμό του σπιτιού με μέγεθος ανάλογα με τον αριθμό των ψηφίων
     1369{{{
     1370#!mapcss
     1371node[addr:housenumber] {
     1372    symbol-shape: circle;
     1373    symbol-size: eval((min(length(tag("addr:housenumber")), 3) * 5) + 3);
     1374    symbol-fill-color: #B0E0E6;
     1375
     1376    text: "addr:housenumber";
     1377    text-anchor-horizontal: center;
     1378    text-anchor-vertical: center;
     1379    text-offset-x: -1;
     1380    text-offset-y: -1; }
     1381   
     1382node[addr:housenumber]::hn_casing {
     1383    z-index: -100;
     1384    symbol-shape: circle;
     1385    symbol-size: +2;
     1386    symbol-fill-color: blue;
     1387}
     1388}}}
     1389* αντιστροφή χρωμάτων
     1390{{{
     1391#!mapcss
     1392*::* {
     1393    color: eval(rgb(1 - red(prop(color)), 1 - green(prop(color)), 1 - blue(prop(color))));
     1394    fill-color: eval(rgb(1 - red(prop(fill-color)), 1 - green(prop(fill-color)), 1 - blue(prop(fill-color))));
     1395}
     1396}}}
     1397* τυχαία πράγματα
     1398{{{
     1399#!mapcss
     1400way {
     1401    width: eval(random() * 20);
     1402    color: eval(rgb(random(), random(), random()));
     1403}
     1404}}}
     1405
     1406* παράδειγμα αντιστοίχισης regexp: αλλαγή "nameXXXsubname" σε "name::subname"
     1407{{{
     1408#!mapcss
     1409*[name=~/.+XXX.+/]
     1410{
     1411    _match: regexp_match("(.+?)XXX(.+)", tag("name"));
     1412    text: concat(get(prop("_match"),1), "::", get(prop("_match"),2));
     1413}
     1414}}}
     1415
     1416* βάψιμο κτιρίων σε διαφορετικά χρώματα ανάλογα με την οδό στις ετικέτες διευθύνσεων
     1417{{{
     1418#!mapcss
     1419area[building][addr:street] {
     1420    fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7);
     1421    fill-opacity: 0.8;
     1422}
     1423}}}
     1424
     1425* περίγραμμα στο εσωτερικό μιας περιοχής
     1426{{{
     1427#!mapcss
     1428area[building]:clockwise {
     1429    right-casing-width: 10;
     1430}
     1431area[building]:anticlockwise {
     1432    left-casing-width: 10;
     1433}
     1434/* or */
     1435area[building][is_clockwise()] {
     1436    right-casing-width: 10;
     1437}
     1438area[building][is_anticlockwise()] {
     1439    left-casing-width: 10;
     1440}
     1441}}}
     1442
     1443* επιλογέας χωρίς διάκριση πεζών-κεφαλαίων. Αυτό ταιριάζει: `Name=Main Street`, αλλά και με `naMe=MAIN STREET`
     1444{{{
     1445#!mapcss
     1446way[/(?i)^name$/ =~ /(?i)^Main Street$/] {
     1447}
     1448}}}
     1449
     1450
     1451== Σημειώσεις συμβατότητας ==
     1452=== MapCSS 0.2 ===
     1453==== Γραμματική ====
     1454 * Το `way[oneway=yes]` δεν έχει κάποια μαγική ιδιότητα, μπορείτε να χρησιμοποιήσετε το `way[oneway?]` στη θέση του
     1455 * όχι `@import`
     1456 * Το JOSM δεν απαιτεί το `eval(...)` να περιβάλλει εκφράσεις, αλλά για συμβατότητα με άλλες υλοποιήσεις MapCSS, συνιστάται να το γράφετε.
     1457
     1458==== Ιδιότητες ====
     1459Προς το παρόν, το JOSM ''δεν'' υποστηρίζει τις ακόλουθες ιδιότητες:
     1460 line: ::
     1461  `image`
     1462 label: ::
     1463  `font-variant, text-decoration, text-transform, max-width`
     1464 shield: ::
     1465  δεν υποστηρίζεται
     1466
     1467=== Halcyon (Potlatch 2) ===
     1468 * Η ετικέτα κειμένου τοποθετείται στο κέντρο του εικονιδίου. Για συμβατότητα με το Halcyon, βάλτε
     1469{{{
     1470#!mapcss
     1471node { text-anchor-vertical: center; text-anchor-horizontal: center; }
     1472}}}
     1473 στην αρχή του φύλλου στυλ σας.
     1474 * το τυπικό z-index στο Halcyon είναι 5, αλλά στο JOSM είναι 0
     1475 * Το '''`image: circle;`''' αντιστοιχεί σε '''`symbol-shape: circle;`'''
     1476
     1477=== Kothic ===
     1478 * Το Kothic υποστηρίζει το eval, το οποίο πιθανόν να διαφέρει από το eval του JOSM.
     1479 * Το Kothic καταλαβαίνει μονάδες μέτρησης, ενώ το JOSM υπολογίζει πάντα σε pixel.
     1480 * Τα χαρακτηριστικά εξώθησης δεν είναι διαθέσιμα στο JOSM.
     1481
     1482=== Ceyx ===
     1483 * φαίνεται να χρησιμοποιεί `[tunnel=1]` αντί για `[tunnel=yes]` (Halcyon) ή `[tunnel?]` (JOSM)
     1484
     1485
     1486== Media queries (παρωχημένο) ==
     1487
     1488{{{#!td style="background-color: #faa"
     1489Σημείωση: Τα media queries είναι παρωχημένα. Πρέπει να χρησιμοποιείτε κανόνες @supports αντ’ αυτών (δείτε παραπάνω).
     1490}}}
     1491Τα media queries χρησιμοποιούνται για να παραλείψετε ένα τμήμα του στυλ υπό ορισμένες συνθήκες. Συνήθως χρησιμοποιούνται όταν θέλετε να αξιοποιήσετε ένα χαρακτηριστικό που εισήχθη σε νεότερη έκδοση του JOSM, αλλά επιθυμείτε να έχετε και ένα εναλλακτικό στυλ για χρήστες παλαιότερων εκδόσεων. Αυτή η δυνατότητα εισήχθη με την r6970. Παράδειγμα:
     1492{{{
     1493#!mapcss
     1494@media (min-josm-version: 9789) {
     1495    way[highway] {
     1496        width: 4;
     1497        color: orange;
     1498    }
     1499    /* φανταχτερά νέα πράγματα */
     1500    /* ... */
     1501}
     1502
     1503@media (max-josm-version: 9788) {
     1504    way[highway] {
     1505        width: 4;
     1506        color: blue;
     1507    }
     1508    /* εναλλακτική λειτουργία, χρησιμοποιώντας πιο απλά χαρακτηριστικά */
     1509    /* ... */
     1510}
     1511}}}
     1512
     1513Η σύνταξη ταιριάζει πολύ με την επίσημη [https://www.w3.org/TR/css3-mediaqueries/#syntax σύνταξη css]. Υποστηρίζονται οι ακόλουθες συνθήκες:
     1514
     1515{{{#!th
     1516'''Συνθήκη μέσου'''
     1517}}}
     1518{{{#!th
     1519'''Περιγραφή'''
     1520}}}
     1521|-
     1522{{{#!td
     1523(min-josm-version: ''<number>'')
     1524}}}
     1525{{{#!td
     1526Συμπερίλαβε μόνο την ενότητα `@media` όταν η τρέχουσα έκδοση του JOSM είναι μεγαλύτερη ή ίση με τον καθορισμένο αριθμό.
     1527}}}
     1528|-
     1529{{{#!td
     1530(max-josm-version: ''<number>'')
     1531}}}
     1532{{{#!td
     1533Συμπερίλαβε μόνο την ενότητα `@media` όταν η τρέχουσα έκδοση του JOSM είναι μικρότερη ή ίση με τον καθορισμένο αριθμό.
     1534}}}
     1535|-
     1536{{{#!td
     1537(user-agent: ''<string>'')
     1538}}}
     1539{{{#!td
     1540Συμπερίλαβε μόνο την ενότητα `@media` όταν το όνομα του επεξεργαστή/απεικονιστής ταιριάζει με το δοσμένο κείμενο. Στο JOSM, η μόνη αποδεκτή τιμή είναι `josm`.
     1541}}}
     1542
     1543Οι συνθήκες μπορούν να συνδυαστούν με `and`:
     1544
     1545{{{
     1546#!mapcss
     1547@media (min-josm-version: 6970) and (max-josm-version: 7014) {
     1548 /* μόνο για εκδόσεις JOSM από 6970 έως 7014 */
     1549}
     1550}}}
     1551
     1552Μπορείτε να συνδυάσετε πολλαπλές συνθήκες με κόμμα (λογικό ''ή''):
     1553
     1554{{{
     1555#!mapcss
     1556@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) {
     1557  /* για εκδόσεις JOSM 6970 έως 7014 και για τον επεξεργαστή με όνομα "myEditor" */
     1558}
     1559}}}
     1560
     1561Εφόσον τα ερωτήματα πολυμέσων υποστηρίζονται μόνο στο JOSM 6970 και νεότερες εκδόσεις, θα πρέπει επίσης να το καθορίσετε ως ελάχιστη έκδοση JOSM στον επιλογέα μεταδεδομένων:
     1562
     1563{{{
     1564#!mapcss
     1565meta {
     1566    min-josm-version: "6970"; /* Αυτό το στυλ χρησιμοποιεί ερωτήματα πολυμέσων */
     1567    /* ... */
     1568}
     1569}}}
     1570
     1571
     1572{{{#!comment
     1573Υπάρχει επίσης η λέξη-κλειδί `not` (δείτε το συνδεδεμένο έγγραφο CSS για λεπτομέρειες).
     1574Αυτό έχει υλοποιηθεί, αλλά πιθανώς δεν είναι πολύ χρήσιμο. Μη διστάσετε να προσθέσετε τεκμηρίωση.
     1575}}}
     1576
     1577