wiki:El:Help/Styles/MapCSSImplementation

Άλλες γλώσσες:

Υλοποίηση MapCSS

Η υλοποίηση του MapCSS στο JOSM χρησιμοποιείται για τις εξής λειτουργίες:

Συνιστάται η εγκατάσταση του MapCSS Syntax Highlighter στο VS Code για να προσθέσετε οπτική επισήμανση για τη βαφή MapCSS και τη σύνταξη επικύρωσης.

Γενική Δομή

Ένα φύλλο στυλ MapCSS περιέχει κανόνες της μορφής:

selector {
    prop: value;
    /* ... */
    prop: value;
    /* and/or */
    set: class;
    set: .class;
    /* σημειώστε ότι οι κανόνες επικύρωσης δεν χρησιμοποιούν την άνω και κάτω τελεία μετά το set */
}

Ο αλγόριθμος για την εύρεση των στυλ για ένα δεδομένο αντικείμενο έχει ως εξής:

 - για κάθε κανόνα:
     εάν εφαρμόζεται ο επιλογέας, ορίστε τις ιδιότητες από το { } μπλοκ
 - αναλύστε την τελική λίστα ιδιοτήτων και δημιουργήστε στυλ από αυτήν

Το MapCSS χρησιμοποιεί τη μορφή σχολίων της CSS (/* ... */). Σημειώστε ότι κατά τον σχολιασμό μεγάλων τμημάτων ενός αρχείου MapCSS, ορισμένες δομές ενδέχεται να προκαλέσουν ένα απροσδόκητο τέλος του σχολίου, για παράδειγμα:

/*
*[highway][name =~ /^R(\.|:)? .*/] { /* το τέλος μιας κανονικής έκφρασης μπορεί να οριστεί ως απροσδόκητο τέλος σχολίου */
        throwWarning: tr("foo");
}
*/

Επιλογείς

Οι Επιλογείς υποδηλώνουν τις εκφράσεις φίλτρου ενός κανόνα MapCSS. Ο κανόνας εφαρμόζεται μόνο σε ένα αντικείμενο χάρτη, εάν οι επιλογείς του ταιριάζουν με το αντικείμενο.

Οι επιλογείς στο MapCSS διαφέρουν από το τυπικό CSS για τον ιστό. Το MapCSS υποστηρίζει μόνο ένα υποσύνολο των τυπικών επιλογέων CSS, αλλά τους επεκτείνει με πρόσθετους επιλογείς που απαιτούνται για δεδομένα OSM.

Μερικά βασικά παραδείγματα:

/* εφαρμόζεται σε γραμμές με ετικέτα highway=residential */
way[highway=residential] {  /*  τα στυλ */}

/* εφαρμόζεται σε νέες, κλειστές γραμμές στο επίπεδο 1, υπό την προϋπόθεση ότι έχουν την ετικέτα amenity=parking και access=customers, και υπό την προϋπόθεση 
 * ότι το επίπεδο ζουμ είναι μεταξύ 11 και 14 
 */
way|z11-14[amenity=parking][access=customers]:closed:new::layer_1 {...}


area[amenity=parking][access=customers], area[amenity=parking][!access] {...}
relation[type=route][route=foot] > way::relation_underlay {..}

Τα διαφορετικά στοιχεία (type-, zoom- , επιλογέας condition, pseudo classes, layer identifier, grouping και child combinator) εξηγούνται παρακάτω.

Τύπος Επιλογέα

Επιλογέας

Περιγραφή

*

Ταιριάζει με οποιοδήποτε αντικείμενο

node, way, relation

Ταιριάζει με τα αντικείμενα osm του δεδομένου τύπου.

area

Ταιριάζει με οποιαδήποτε περιοχή, ανεξάρτητα από το αν τα όρια της περιοχής έχουν αποδοθεί με μία μόνο γραμμή ή με ένα σύνολο γραμμών ενωμένων μέσω μιας σχέσης.

area[natural=beach] {...} 
/* ... είναι ισοδύναμο με ... */
way[natural=beach], relation[type=multipolygon][natural=beach] {...} 

Σημειώστε ότι το area επιλέγει επίσης μη κλειστές γραμμές, επομένως μπορεί να είναι χρήσιμο να προσθέσετε την ψευδή κλάση :closed. Ο Επικυρωτής JOSM θα δώσει μια προειδοποίηση για μη κλειστές γραμμές που έχουν στυλ περιοχής.

meta

Ο επιλογέας meta ξεκινά έναν ειδικό κανόνα που πρέπει να βρίσκεται στην αρχή του αρχείου. Παρέχει γενικές πληροφορίες για το φύλλο στυλ. Όλο το λογισμικό που υποστηρίζει το MapCSS θα πρέπει να μπορεί να αναλύσει αυτό το τμήμα χωρίς σφάλματα, επομένως μην χρησιμοποιείτε ιδιαίτερες ή μη τυπικές επεκτάσεις σύνταξης σε αυτό το σημείο.

meta {
    title: "Parking lanes";   /* τίτλος που εμφανίζεται στο μενού */
    icon: "logo_16x16x8.png"; /* μικρό εικονίδιο που εμφανίζεται στο μενού δίπλα στον τίτλο */
    version: "1.2";           /* η έκδοση του στυλ */
    description: "...";       /* μία ή δύο προτάσεις που περιγράφουν το στυλ */
    author: "...";            /* ο/οι δημιουργός/οί του στυλ */
    link: "https://...";      /* URL στην ιστοσελίδα του στυλ */
    min-josm-version: 6789;   /* η ελάχιστη έκδοση JOSM όπου λειτουργεί αυτό το στυλ */
}

canvas

Ορισμένες πληροφορίες στυλ που δεν αφορούν συγκεκριμένα κόμβους, γραμμές ή σχέσεις.

canvas {
    fill-color: #ffffea; /* το προηγούμενο χρώμα φόντου έχει καταργηθεί από το r7110 */
    default-points: false;
    default-lines: false;
}

Κλειδί

Περιγραφή

Μορφή τιμής

Προεπιλεγμένη Τιμή

fill-color

Καθορίζει το συνολικό χρώμα γεμίσματος/φόντου το (background-color έχει καταργηθεί από το r7110).

Χρώμα

black

default-points

Αν θα προστεθεί το προεπιλεγμένο στυλ σημείου σε κόμβους όπου δεν εφαρμόζεται άλλο στυλ.

Boolean

true

default-lines

Αν θα προστεθεί το προεπιλεγμένο στυλ γραμμής σε γραμμές όπου δεν εφαρμόζεται άλλο στυλ.

Boolean

true

Θυγατρικός Επιλογέας

Εάν ένας κόμβος είναι μέρος μιας γραμμής, λέμε ότι είναι θυγατρικό αυτής της γραμμής. Ομοίως, εάν ένας κόμβος, μια γραμμή ή μια σχέση είναι μέλος μιας σχέσης, λέμε ότι είναι θυγατρικό αυτής της σχέσης.

Στο MapCSS μπορείτε να χρησιμοποιήσετε έναν επιλογέα θυγατρικών που ταιριάζει μόνο εάν ταιριάζουν τόσο το γονικό όσο και το θυγατρικό αντικείμενο.

Παράδειγμα:

/*
 * ταιριάζει μόνο για μια γραμμή που είναι θυγατρική μιας σχέσης με ετικέτες 
 * type=route και route=foot
 */
relation[type=route][route=foot] > way {...}

Σημειώσεις:

  • Ο επιλογέας Ζουμ και το αναγνωριστικό Επιπέδου είναι σχετικά μόνο για το τμήμα στα δεξιά του συμβόλου >.
  • Οι συναρτήσεις prop() και is_prop_set() υποστηρίζονται μόνο στη δεξιά πλευρά του συμβόλου >.
  • Οι συναρτήσεις parent_tag και parent_tags (δείτε παρακάτω) μπορούν να χρησιμοποιηθούν για την πρόσβαση σε ετικέτες από τον/τους γονικό/ούς.
  • Για συμβατότητα με το πρότυπο MapCSS 0.2, relation[type=route][route=foot] way {/*...*/}, υποστηρίζεται επίσης η διαδρομή χωρίς το σύμβολο μεγαλύτερο από >. Ωστόσο, σε αυτήν την περίπτωση δεν μπορεί να καθοριστεί επιλογέας Σύνδεσης.

Γονικός Επιλογέας

Εκτός από τους θυγατρικούς Επιλογείς, το JOSM υποστηρίζει την έννοια του γονικού επιλογέα. Σημειώστε ότι οι γονικοί επιλογείς αποτελούν μια επέκταση του MapCSS ειδική για το JOSM και δεν υπάρχουν σε άλλες υλοποιήσεις του MapCSS.

Παρόμοια με έναν θυγατρικό επιλογέα, ένας γονικός επιλογέας ταιριάζει μόνο εάν και το γονικό και το θυγατρικό αντικείμενο ταιριάζουν. Σε αντίθεση με τον θυγατρικό επιλογέα, χρησιμοποιείται ο χαρακτήρας <.

Σε αντίθεση με τον θυγατρικό επιλογέα, το γονικό αντικείμενο θα "επιλεγεί". Με άλλα λόγια, οι ιδιότητες στο {{{...}}}-Μπλοκ Δηλώσεων εφαρμόζονται στο αντικείμενο που βρίσκεται στη δεξιά πλευρά του συμβόλου <.

Παράδειγμα:

/*
 * ταιριάζει για έναν δρόμο που έχει τουλάχιστον έναν κόμβο με την ετικέτα traffic_calming=*
 */
node[traffic_calming] < way[highway] {...}

Επιλογέας συνθήκης

Οι επιλογείς μπορούν να περιλαμβάνουν ένα σύνολο συνθηκών. Εάν οποιαδήποτε από αυτές τις συνθήκες αξιολογηθεί ως ψευδής, ο επιλογέας δεν ταιριάζει και ο κανόνας στυλ δεν εφαρμόζεται.

Μία συνθήκη χαρακτηριστικού ορίζει μια προϋπόθεση σε μια ετικέτα ενός αντικειμένου OSM.

Χειριστής

Περιγραφή

Παράδειγμα

=

Ακριβής αντιστοίχιση της τιμής.

way[highway=residential]                    /* διακρίνει πεζά-κεφαλαία, δηλαδή ΔΕΝ ταιριάζει, π.χ. highway=Residential ή Highway=residential */
node[name="My name"]                        /* χρήση εισαγωγικών εάν το κλειδί ή η τιμή περιέχουν κενά                                       */
node["name:pl"="Królewiec"]                 /* χρήση εισαγωγικών εάν το κλειδί ή η τιμή περιέχουν ειδικούς χαρακτήρες όπως άνω-κάτω τελεία   
                                               ή χαρακτήρες unicode                                                                          */

!=

Τιμή όχι ίση

way[highway!=residential]
node[name!="My name"]
node["name:pl"!="Królewiec"]

<, >, <=, >=

Σύγκριση αριθμητικών τιμών.

node[population >= 50000]                   /* πληθυσμός μεγαλύτερος ή ίσος με 50000 */
node[ele = 3000]                            /* υψόμετρο με ακριβώς 3000 μέτρα        */

^=

Ταίριασμα προθέματος

node[name ^= "myprefix"]                    /* η τιμή ξεκινά με 'myprefix' */

$=

Ταίριασμα Postfix

node[name $= "mypostfix"]                   /* η τιμή τελειώνει με 'mypostfix' */

*=

Ταίριασμα υποσυμβολοσειράς

node[name *= "my substring"]                 /* η τιμή περιέχει την υποσυμβολοσειρά 'my substring' */

~=

Συμμετοχή σε λίστα

*[vending~=stamps]                          /* η τιμή ετικέτας για την ετικέτα 'vending' αποτελείται από μια λίστα ; */
                                            /* διαχωρισμένων τιμών και μία από αυτές τις τιμές είναι 'stamps'        */

=~

Ταίριασμα Κανονικής Έκφρασης

*[name=~/^My_pattern.*/]                    /* η τιμή της ετικέτας 'name' ταιριάζει με την κανονική έκφραση '^My_pattern.*' */
                                            /* Σημειώστε ότι οι κανονικές εκφράσεις πρέπει να περικλείονται σε /.../        */

Η αντιστοίχιση χωρίς διάκριση πεζών-κεφαλαίων μπορεί να ενεργοποιηθεί μέσω της ενσωματωμένης έκφρασης flag (?i) (δείτεPattern.CASE_INSENSITIVE).

*[name =~ /^(?i)(parking)$/]                 /* ταιριάζει με parking, Parking, PARKING, PaRkInG,...     */
*[name =~ /^(?U)(\p{Lower})+$/]              /* το όνομα αποτελείται μόνο από πεζούς χαρακτήρες unicode */

!~ (από το r6455)

αρνητικό ταίριασμα Κανονικής Έκφρασης

*[surface!~/paved|unpaved/]

(U+2208, από το r6609)

στοιχείο του

Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς που περιέχει τουλάχιστον ένα στοιχείο που ταιριάζει με τον αριστερό/ούς επιλογέα/είς.

*[amenity=parking]  area[amenity=parking] {
  throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking");
}

Βρίσκει περιοχές με amenity=parking που περιέχουν τουλάχιστον έναν κόμβο ή περιοχή με amenity=parking. Από το r15064 αυτός ο κανόνας παράγει μία προειδοποίηση για κάθε στοιχείο στα αριστερά όταν υπάρχουν πολλαπλά ταιριάσματα.

(U+2286, από το r15102)

Υποσύνολο του ή Ίσο με

Συνώνυμο του .

*[amenity=parking]  area[amenity=parking] {
  throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking");
}

(U+2287, από το r15102)

Υποσύνολο του ή Ίσο με

Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και περιέχεται σε ένα ή περισσότερα στοιχεία που ταιριάζουν με τους αριστερούς επιλογείς.

area[amenity=parking]  *[amenity=parking]

Βρίσκει κόμβους ή περιοχές με amenity=parking μέσα σε περιοχές με amenity=parking. Πιο αργό από και επομένως δεν είναι χρήσιμο στους κανόνες επικύρωσης, αλλά μπορεί να είναι χρήσιμο στο παράθυρο αναζήτησης.

(U+2288, από το r15102)

Ούτε Υποσύνολο του ούτε Ίσο με

Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχει κανένα στοιχείο που ταιριάζει με τους αριστερούς επιλογείς.

*[highway=street_lamp]  area:closed2[amenity=parking][lit=yes]

Βρίσκει περιοχές amenity=parking που έχουν lit=yes αλλά δεν περιέχουν λάμπα. Να προσθέτετε πάντα :closed2 για να αποφύγετε ψευδώς θετικά αποτελέσματα, καθώς οι μη κλειστές περιοχές δεν περιέχουν ποτέ κάτι.

(U+2289, από το r15102)

Ούτε Υπερσύνολο ούτε Ίσο με

Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχεται σε καμία περιοχή που ταιριάζει με τους αριστερούς επιλογείς.

area[landuse=residential]  *[building]

Βρίσκει κτίρια που δεν βρίσκονται εντός καμίας περιοχής landuse=residential. Σημειώστε ότι αυτός ο τελεστής είναι πιθανό να παράγει ψευδώς θετικά αποτελέσματα όταν έχετε περιοχές landuse=residentialπου δεν ταιριάζουν με :closed2.

(U+29C9, από το r6613)

διάβαση

area:closed:areaStyle  area:closed:areaStyle {
  throwOther: tr("Overlapping Areas");
}

λαμβάνει υπόψη την ετικέτα layer εάν έχει οριστεί (από το r12986)

Από την έκδοση r6554 είναι δυνατό να προστεθεί πρόθεμα * στο "value" ηλαδή στην έκφραση μετά τον τελεστή) ώστε να γίνει "απο-αναφορά" (δηλαδή να θεωρηθεί ως άλλο κλειδί και να ληφθεί η τιμή του). Έτσι, το [key1 = *key2] ή το [key1=*key2] συγκρίνει την τιμή του key1 με την τιμή του key2, και το [key =~ */pattern/] θεωρεί την τιμή του μοτίβου κλειδιού ως κανονική έκφραση και την αντιστοιχίζει με την τιμή του key.

Επιπλέον, μπορείτε να ελέγξετε εάν μια ετικέτα υπάρχει ή όχι:

Συνθήκη

Παράδειγμα

Παρουσία ετικέτας

way[highway]                     /* αντιστοιχεί με οποιαδήποτε γραμμή που έχει ετικέτα 'highway' (διακρίνει πεζά-κεφαλαία)     */
way["name:fr"]                   /* χρήση εισαγωγικών εάν το όνομα της ετικέτας περιλαμβάνει ειδικούς χαρακτήρες (κενό χώρο, 
                                    άνω και κάτω τελεία, χαρακτήρες unicode, κ.λπ.)                                            */

Απουσία ετικέτας

way[!highway]                     /* αντιστοιχεί με οποιαδήποτε γραμμή που δεν έχει ετικέτα 'highway' (διακρίνει πεζά-κεφαλαία)  */
way[!"name:fr"]                   /* χρήση εισαγωγικών εάν το όνομα της ετικέτας περιλαμβάνει ειδικούς χαρακτήρες (κενό χώρο, 
                                     άνω και κάτω τελεία, χαρακτήρες unicode, κ.λπ.)                                             */

Παρουσία ετικέτας με Κανονικής έκφρασης ταίριασμα (από το r6547)

way[/^addr:/]                     /* αντιστοιχεί με οποιοδήποτε κλειδί `addr:*` */

Απουσία ετικέτας με ταίριασμα Κανονικής έκφρασης

way[!/^addr:/]                    /* αντιστοιχεί με οποιαδήποτε γραμμή που δεν έχει ετικέτα 'addr:*' */

Μπορείτε να ελέγξετε εάν η τιμή μιας ετικέτας είναι λογική τιμή αλήθειας. Η τιμή αξιολογείται ως true, εάν είναι είτε "yes", "true", ή "1". Όλες οι άλλες τιμές αξιολογούνται ως ψευδείς.

Συνθήκη

Παράδειγμα

Έλεγχος για αληθή τιμή

way[oneway?]                   /* αντιστοιχεί με οποιαδήποτε γραμμή με μια αληθή τιμή στην ετικέτα 'oneway' */

Έλεγχος για ψευδή τιμή (από το r6513)

way[oneway?!]                  /* αντιστοιχεί με οποιαδήποτε γραμμή με μια ψευδή τιμή  στην ετικέτα 'oneway' */

Επιλογέας περιοχής

Μπορείτε να ελέγξετε αν ένα αντικείμενο βρίσκεται εντός ή εκτός μιας συγκεκριμένης περιοχής. Το JOSM διαθέτει εσωτερική βάση δεδομένων για αυτό. Το αρχείο περιοχών μπορεί να ληφθεί και να ανοιχθεί στο JOSM για εξέταση (προεπισκόπηση στιγμιότυπου). Περιέχει τα σύνορα όλων των χωρών του κόσμου. Για λόγους απόδοσης, τα σύνορα είναι απλοποιημένα. Μπορούν να γίνουν πιο ακριβή για ειδικές περιπτώσεις, κατόπιν αιτήματος. Οι περιοχές έχουν "ετικέτες" με τους κωδικούς ISO_3166-1_alpha-2. Οι ΗΠΑ, ο Καναδάς, η Κίνα, η Ινδία και η Αυστραλία έχουν επιπλέον όρια για τις υποδιαιρέσεις τους. Δείτε τα ακόλουθα παραδείγματα για το πώς να χρησιμοποιείτε τους επιλογείς περιοχής. Οι επιλογείς περιοχής είναι λιγότερο χρήσιμοι στην τεχνοτροπία βαφής χάρτη και μπορεί να επιβαρύνουν σημαντικά την απόδοση εκεί. Ωστόσο, είναι πολύ πιο χρήσιμοι για κανόνες επικύρωσης που βασίζονται σε MapCSS. Για να επιλέξετε περιοχές με κυκλοφορία στα αριστερά ή στα δεξιά, υπάρχει απλούστερος τρόπος — δείτε τις Ψευδοκλάσεις. Δείτε το #10387 για την κύρια υλοποίηση αυτής της λειτουργίας.

                                      /* ταιριάζει με οποιονδήποτε κόμβο που βρίσκεται …                             */
node[inside("FR")]                    /* … εντός της Γαλλίας (συμπεριλαμβάνονται τα υπερπόντια εδάφη) */
node[inside("FX")]                    /* … εντός της Μητροπολιτικής Γαλλίας (μόνο το 
                                         πειρωτικό τμήμα με τα κοντινά νησιά, συμπεριλαμβανομένης της Κορσικής)   */
node[inside("EU")]                    /* … εντός της Ευρωπαϊκής Ένωσης                         */
node[inside("FR,DE")]                 /* … εντός της Γαλλίας __Ή__ εντός της Γερμανίας            */
node[inside("US-FL")]                 /* … εντός της πολιτείας Φλόριντα των ΗΠΑ                       */

node[outside("FR")]                   /* … εκτός της Γαλλίας                                    */
node[outside("FR,DE")]                /* … εκτός της Γαλλίας __ΚΑΙ__ εκτός της Γερμανίας         */
node[inside("US")][outside("US-FL")]  /* … εντός των ΗΠΑ εκτός από την πολιτεία Φλόριντα           */

Επιλογέας σύνδεσης

Σε έναν θυγατρικό επιλογέα, μπορείτε να διατυπώσετε συνθήκες στη σύνδεση μεταξύ ενός γονικού και ενός θυγατρικού αντικειμένου.

Αν το γονικό αντικείμενο είναι μια σχέση, μπορείτε να ορίσετε συνθήκες για τον ρόλο που έχει ένα μέλος σε αυτήν τη σχέση.

relation[type=route] >[role="link"] way {  /* ταιριάζει με οποιαδήποτε γραμμή που είναι μέλος της σχέσης διαδρομής με τον ρόλο 'link' */ 
   color: blue;
}

Τελεστής

Περιγραφή

Παράδειγμα

=

Ακριβής αντιστοίχιση του ονόματος ρόλου. Το όνομα του ρόλου είναι υποχρεωτικό σε αυτό το πλαίσιο.

relation >[role=residential] way           
relation >[role="My name"]   way           /* χρησιμοποιήστε εισαγωγικά αν η τιμή του ρόλου περιέχει κενά ή άλλους ειδικούς χαρακτήρες */

Οι τελεστές !=, ^=, $=, *= και ~= Υποστηρίζονται επίσης. Ανατρέξτε στους τελεστές επιλογής συνθήκης.

Οι κόμβοι σε γραμμές και τα μέλη σε σχέσεις είναι ταξινομημένα. Μπορείτε να διατυπώσετε συνθήκες για τη θέση ενός κόμβου σε μια γραμμή ή ενός αντικειμένου μέλους σε μια σχέση. Οι θετικοί αριθμοί μετράνε από το πρώτο έως το τελευταίο στοιχείο, οι αρνητικοί αριθμοί (από το r8236) μετράνε από το τελευταίο έως το πρώτο στοιχείο.

relation[type=route] >[index=1] way {  /* ταιριάζει με την πρώτη γραμμή που είναι μέλος της σχέσης διαδρομής  */ 
   color: blue;
}

way >[index=-1] node {  /* ταιριάζει με τον τελευταίο κόμβο μιας γραμμής  */ 
   symbol-stroke-color: green;
}

way!:closed >[index=1] node!:connection,
way!:closed >[index=-1] node!:connection {  /* ταιριάζει σε όλους τους μοναδικούς τερματικούς κόμβους μιας γραμμής */ 
   symbol-stroke-color: green;
}

Επιλογέας ζουμ

Μπορείτε να συνδυάσετε έναν επιλογέα τύπου με έναν επιλογέα ζουμ. Ο επιλογέας ζουμ περιορίζει το εύρος των επιπέδων ζουμ στα οποία εφαρμόζεται ο αντίστοιχος κανόνας MapCSS.

Παράδειγμα 1 Παράδειγμα 2 Παράδειγμα 3 Περιγραφή
way|z12 {...} node|z12 {...} node|z12[...] {...} Σε επίπεδο ζουμ 12
way|z13-15 {...} node|z13-15 {...} way|z13-15[...] {...} Από 13 έως 15
way|z16- {...} node|z16- {...} node|z16-[...] {...} 16 και πάνω
way|z-12 {...} node|z-12 {...} node|z-12[...] {...} 12 και κάτω
way {...} node{...} way[...] {...} οποιοδήποτε επίπεδο ζουμ

Ο ακριβής ορισμός των εύρων κλίμακας για κάθε επίπεδο ζουμ ενδέχεται να αλλάξει στο μέλλον. Με βάση τον εμπειρικό κανόνα, μπορείτε να περιμένετε να βρίσκεστε περίπου στο επίπεδο ζουμ n όταν οι εικόνες εμφανίζουν πλακίδια slippymap επιπέδου n.

Ψευδοκλάσεις

Δείτε το Javadoc για την πιο πρόσφατη λίστα των ψευδοκλάσεων που υποστηρίζει η υλοποίηση MapCSS του JOSM.

Κλάση Περιγραφή
:closed αληθές για γραμμές όπου ο πρώτος κόμβος είναι ίδιος με τον τελευταίο και για οποιαδήποτε (πλήρως ληφθείσα) σχέση πολυπολυγώνου
:closed2 ίδιο με το παραπάνω, αλλά αγνοεί αν το πολυπολύγωνο έχει ληφθεί πλήρως (από την έκδοση r9099)
:completely_downloaded Αληθές για μια σχέση της οποίας όλα τα μέλη έχουν ληφθεί (από την έκδοση r9099)
:new όλα τα νέα αντικείμενα
:connection αληθές για κόμβους που χρησιμοποιούνται από περισσότερες από μία γραμμές
:unconnected αληθές για κόμβους που δεν χρησιμοποιούνται από καμία γραμμή (από την έκδοση r6687)
:tagged Αυτό που το JOSM θεωρεί με ετικέτα, δηλαδή ένα αντικείμενο με ετικέτα-κλειδί διαφορετική από τις εξής: source*, source_ref, note, comment, converted_by, created_by, watch*, fixme, FIXME, description, attribution (έκδοση r4008; σε αυτή την λίστα, το * είναι χαρακτήρας γενίκευσης)
:area-style αληθές αν το αντικείμενο έχει στυλ περιοχής
:righthandtraffic Αληθές αν υπάρχει κυκλοφορία δεξιάς πλευράς στην τρέχουσα τοποθεσία (από την έκδοση r7193); δείτε το κυκλοφορία αριστερής και δεξιάς λωρίδας για στιγμιότυπο οθόνης περιοχών
:clockwise Αν η γραμμή είναι κλειστή και προσανατολισμένη δεξιόστροφα, ή αν είναι ανοιχτή και ο 1ος, 2ος και τελευταίος κόμβος της βρίσκονται σε δεξιόστροφη σειρά.
:anticlockwise Αν η γραμμή είναι κλειστή και προσανατολισμένη αριστερόστροφα, ή αν είναι ανοιχτή και ο 1ος, 2ος και τελευταίος κόμβος της βρίσκονται σε αριστερόστροφη σειρά.
:unclosed_multipolygon αληθές για πλήρως φορτωμένες, ανοιχτές σχέσεις πολυπολυγώνου (από την έκδοση r8252)
:open_end για να επιλέξετε τελικούς κόμβους μη κλειστών πολυπολυγωνικών σχέσεων με το relation:unclosed_multipolygon >:open_end node (από την έκδοση r8252)
:in-downloaded-area tαληθές εάν ένα αντικείμενο βρίσκεται εντός της περιοχής προέλευσης και ψευδές εάν βρίσκεται στην διαγραμμισμένη περιοχή (από την έκδοση r8495).
:selected αληθές εάν ένα αντικείμενο έχει επιλεγεί στον επεξεργαστή (από την έκδοση r9341).
:highlighted αληθές εάν το αντικείμενο είναι επισημασμένο
:modified αλλαγμένα και νέα αντικείμενα (από την έκδοση r7193).

Μπορείτε επίσης να ακυρώσετε ψευδοκλάσεις. Π.χ. !:new για όλα τα παλιά αντικείμενα.

Αναγνωριστικό Επιπέδου

Τα επίπεδα μπορούν να χρησιμοποιηθούν για τη δημιουργία περισσότερων από ενός στυλ για ένα μόνο αντικείμενο. Ακολουθεί ένα παράδειγμα:

way[highway=secondary] {
    width: 3;
    color: yellow;
}

way[highway=tertiary] {
    width: 2;
    color: orange;
}

way[access][access!=yes]::non_public_access_layer {
    width: +2; 
    color:red; 
    dashes: 2; 
    object-z-index:-1.0;
}

way[bridge]::bridge_layer {
    width: +3; 
    color:#000080;
    opacity:0.5;
    object-z-index:1.0; 
}

Αυτό σχεδιάζει όλους τους δευτερεύοντες και τριτεύοντες δρόμους με κίτρινο και πορτοκαλί χρώμα αντίστοιχα. Οποιοσδήποτε δρόμος με ετικέτα πρόσβασης εκτός από το ναι θα λάβει ένα επιπλέον στυλ γραμμής κάτω από (object-z-index:-1.0;) από την κύρια γραμμή. άν αυτό το τμήμα του δρόμου τυχαίνει να είναι γέφυρα, θα λάβει επίσης μια ημιδιαφανή μπλε επικάλυψη. Η τιμή σχετικού πλάτους (width: +2;) αναφέρεται στο πλάτος στο προεπιλεγμένο επίπεδο (2 ή 3 σε αυτήν την περίπτωση).

Το όνομα για το επίπεδο μπορεί να είναι οποιοδήποτε αναγνωριστικό.

Εάν παραλείψετε το επίπεδο στον επιλογέα, αυτό είναι το ίδιο με τη χρήση του ::default.

Ένα ακόμη παράδειγμα:

node[amenity=parking] {
    icon-image: "presets/vehicle/parking/parking.svg";    /* εμφανίζει το εσωτερικό εικονίδιο parking του JOSM στο προεπιλεγμένο επίπεδο */
    text: ref;                                            /* εμφανίζει την τιμή του κλειδιού ref ως κείμενο στο προεπιλεγμένο επίπεδο */
}

node[amenity=parking][fee=yes]::fee {
    icon-image: "presets/money/exchange.svg";             /* εμφανίζει το εσωτερικό εικονίδιο ου JOSM στο επίπεδο χρέωσης */
    icon-offset-x: 14;                                    /* μετακινεί το εικονίδιο */
    icon-offset-y: -12;                                   /* μετακινεί το εικονίδιο */
    text: charge;                                         /* εμφανίζει την τιμή του κλειδιού charge ως κείμενο στο επίπεδο χρέωσης */
    text-offset-x: 16;                                    /* μετακινεί το κείμενο */
    text-offset-y: 17;                                    /* μετακινεί το κείμενο */
}

Το αποτέλεσμα φαίνεται ως εξής:

Επιπλέον, μπορείτε να χρησιμοποιήσετε το * επίπεδο για να παρακάμψετε και να αρχικοποιήσετε όλα τα επίπεδα.
Αυτό παρακάμπτει όλα τα υπάρχοντα υποτμήματα, οπότε:

way::A { a; } 
way::B { b; } 
way::* { c; }  /* παρακάμπτει όλα τα υπάρχοντα υποτμήματα */

is equivalent to

way::A { a; } 
way::B { b; } 
way::A { c; } /* παρακάμπτει  το a με c σε όλα τα υπάρχοντα υποτμήματα */
way::B { c; } /* παρακάμπτει  το b με c σε όλα τα υπάρχοντα υποτμήματα */

Και αρχικοποιεί νέα υποτμήματα. Με άλλα λόγια:

way::* { a; } 
way::A { b; } 

είναι ισοδύναμο με

way::A {} 
way::* { a; } 
way::A { b; } 

το οποίο με τη σειρά του είναι το ίδιο με

way::A { a; } 
way::A { b; } 

ή

way::A { a; b; }

Ομαδοποίηση

Κανόνες με κοινό μπλοκ δηλώσεων μπορούν να ομαδοποιηθούν σε έναν:

area[landuse=forest] { color: green;   width: 2; }
area[natural=wood] { color: green;   width: 2; }

είναι το ίδιο με

area[landuse=forest], area[natural=wood] { color: green;   width: 2; }

Κλάσεις

Μπορείτε να αναθέσετε κλάσεις σε στοιχεία που ταιριάζουν, και να ορίσετε άλλους επιλογείς χρησιμοποιώντας αυτές τις κλάσεις:

/* ανάθεση κλάσεων */
selector {
  set class;
  /* ή ισοδύναμα */
  set .class;
}

/* ταίριασμα κλάσεων */
way.class, node[foo=bar].class {
  /* ... */
}

Παράδειγμα για ανάθεση/ταίριασμα μιας κλάσης με όνομα path:

way[highway=footway] { set path; color: #FF6644; width: 2; }
way[highway=path]    { set path; color: brown; width: 2; }
way.path { text:auto; text-color: green; text-position: line; text-offset: 5; }

Μπορείτε επίσης να αρνηθείτε μια κλάση. Π.χ. way!.path για όλες τις γραμμές που δεν ανήκουν στην κλάση .path.

Κλάσεις και Επίπεδα μαζί

Εάν θέλετε να χρησιμοποιήσετε επίπεδο και κλάσεις μαζί, λάβετε υπόψη ότι πρέπει να προσδιορίσετε την κλάση μέσω του is_prop_set.

node[railway=signal] { set sgnl; }

/* δεν λειτουργεί */
node.sgnl::layer_signal_icon  { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
node.sgnl::layer_signal_text  { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... )

/* χρησιμοποιήστε αντ' αυτού: is_prop_set("...", "default") */
node[is_prop_set("sgnl", "default")]::layer_signal_icon  { z-index: 1000; ... icon: icon/signal-icon.svg; ... }
node[is_prop_set("sgnl", "default")]::layer_signal_text  { z-index: 1010; ... text: concat("Name of signal: ", tag("ref")); ..... )

@supports Υπό όρους Επεξεργασία

Οι κανόνες @supports χρησιμοποιούνται για να παραλείπεται ένα τμήμα του στυλ κάτω από συγκεκριμένες συνθήκες. Συνήθως θέλετε να χρησιμοποιήσετε μια λειτουργία που εισάγεται σε μια νεότερη έκδοση του JOSM, αλλά θέλετε να έχετε ένα εφεδρικό στυλ για χρήστες παλαιότερων πελατών JOSM. Η δυνατότητα αυτή προστέθηκε με την έκδοση r8087. Παράδειγμα:

@supports (min-josm-version: 9789) {
    way[highway] {
        width: 4;
        color: orange;
    }
    /* εντυπωσιακά νέα στοιχεία */
    /* ... */
}

@supports (max-josm-version: 9788) {
    way[highway] {
        width: 4;
        color: blue;
    }
    /* εναλλακτική λειτουργία, χρήση με πιο απλά χαρακτηριστικά */
    /* ... */
}

@supports (icon-offset-x) {
    /* μόνο αν υποστηρίζεται η ιδιότητα icon-offset-x */
    node[amenity] {
        icon-offset-x: 5;
    }
}

Η σύνταξη ταιριάζει αρκετά με την επίσημη σύνταξη css. Υποστηρίζονται οι ακόλουθες συνθήκες:

Συνθήκη

Περιγραφή

(<mapcsskey>)

Ελέγξτε αν υποστηρίζεται ένα συγκεκριμένο κλειδί mapcss, π.χ. repeat-image ή icon-offset-x.

(min-josm-version: <αριθμός>)

Συμπεριλάβετε την ενότητα @supports μόνο όταν η τρέχουσα έκδοση του JOSM είναι μεγαλύτερη ή ίση με τον καθορισμένο αριθμό.

(max-josm-version: <αριθμός>)

Συμπεριλάβετε την ενότητα @supports μόνο όταν η τρέχουσα έκδοση του JOSM είναι μικρότερη ή ίση με τον καθορισμένο αριθμό.

(user-agent: <κείμενο>)

Συμπεριλάβετε την ενότητα @supports μόνο όταν το όνομα του επεξεργαστή/αποκαταστάτης ταιριάζει με το δοσμένο κείμενο. Στο JOSM, η μοναδική αποδεκτή τιμή είναι josm.

Οι συνθήκες μπορούν να συνδυαστούν με το και:

@supports (min-josm-version: 8087) and (max-josm-version: 8200) {
 /* μόνο για τις εκδόσεις JOSM 8087 έως 8200 */
}

Και άλλοι λογικοί τελεστές όπως or και not μπορούν επίσης να χρησιμοποιηθούν. Οι παρενθέσεις είναι απαραίτητες εάν θέλετε να συνδυάσετε διαφορετικούς λογικούς τελεστές:

@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) {
  /* για την έκδοση JOSM 8087 έως 8200 και για τον επεξεργαστή που ονομάζεται "myEditor" */
}

Επειδή οι κανόνες @supports υποστηρίζονται μόνο από το JOSM r8087 και νεότερες εκδόσεις, θα πρέπει επίσης να το ορίσετε ως ελάχιστη έκδοση JOSM στον επιλογέα μεταδεδομένων:

meta {
    min-josm-version: "8087"; /* Αυτό το στυλ χρησιμοποιεί κανόνες @supports */
    /* ... */
}

Ρυθμίσεις Στυλ

Οι ρυθμίσεις Στυλ χρησιμοποιούνται για να παρέχουν στον χρήστη δυνατότητες παραμετροποίησης μιας τεχνοτροπίας βαφής χάρτη. Ο χρήστης μπορεί να τις χρησιμοποιήσει στον διάλογο Τεχνοτροπίας Βαφής Χάρτη. Διατίθενται οι ακόλουθοι τύποι ρυθμίσεων:

  • boolean (από την έκδοση r7450)
  • double (από την έκδοση r15731, δείτε #10435)
  • string (από την έκδοση r15731, δείτε #10435)
  • color (από την έκδοση r16843, δείτε #10435)

Ρυθμίσεις τύπου boolean

Δημιουργία ρύθμισης τύπου boolean:

setting::highway_casing {
  type: boolean;
  label: tr("Σχεδίαση περιγράμματος αυτοκινητόδρομου");
  default: true;
}

Χρήση ρύθμισης τύπου boolean:

way[highway][setting("highway_casing")] {
  casing-width: 2;
  casing-color: white;
}

Ρυθμίσεις τύπου double

Δημιουργία ρύθμισης τύπου double:

setting::place_font_size {
  type: double;
  label: tr("Ορισμός μεγέθους γραμματοσειράς για το όνομα τοποθεσίας...");
  default: 11;
}

Χρήση ρύθμισης τύπου double:

node.place, way.place, area.place {
  font-size: setting("place_font_size");
}

Ρυθμίσεις τύπου string

Δημιουργία ρύθμισης τύπου string:

setting::textdisplay {
  type: string;
  label: tr("κλειδί που χρησιμοποιείται για την εμφάνιση");
  default: "name"; /* παραδείγματα χρήσης: alt_name, old_name, addr:housename, ref, operator, ... */
}

Χρήση ρύθμισης τύπου string:

way {
  text: tag(setting("textdisplay"));
}

Ρυθμίσεις τύπου color

Δημιουργία ρύθμισης τύπου color. Το προεπιλεγμένο μπορεί να είναι οποιοδήποτε χρώμα αναγνωρίζεται σύμφωνα με τις επεξηγήσεις τιμών Ιδιοτήτων:

setting::colordisplay {
  type: color;
  label: tr("κλειδί που χρησιμοποιείται για την εμφάνιση");
  default: colorDisplayCustomPref#FF00FF;
}

Χρήση ρύθμισης τύπου color:

way {
  color: setting("colordisplay");
}

Ομαδοποίηση ρυθμίσεων

Παρόμοιες ρυθμίσεις μπορούν να ομαδοποιηθούν με τον ορισμό ομάδων ρυθμίσεων (από την έκδοση r15289):

settings::my_group {
  label: tr("η υπέροχη ομάδα μου");
  icon: "my_beautiful_icon";
}

Η ετικέτα είναι υποχρεωτική, το εικονίδιο είναι προαιρετικό.

Μόλις οριστεί μια ομάδα ρυθμίσεων, μπορεί να γίνει αναφορά σε αυτήν από όλες τις ρυθμίσεις που ανήκουν σε αυτήν:

setting::hide_icons {
  type: boolean;
  label: tr("Απόκρυψη εικονιδίων σε χαμηλό ζουμ");
  default: true;
  group: "my_group";
}

Οι ομάδες ρυθμίσεων εμφανίζονται ως υπομενού στο μενού ρυθμίσεων στυλ. Αν τουλάχιστον δύο ρυθμίσεις ανήκουν σε μια ομάδα, ένα ειδικό στοιχείο μενού "Εναλλαγή όλων των ρυθμίσεων" επιτρέπει την γρήγορη ενεργοποίηση/απενεργοποίηση όλων των ρυθμίσεων από αυτήν την ομάδα ταυτόχρονα. Παράδειγμα χρήσης: MapWithAI (en).

Ιδιότητες

Γενικές ιδιότητες

Κλειδί Περιγραφή Μορφή Τιμής Προεπιλεγμένη Τιμή
z-index Καθορίστε τη σειρά σχεδίασης των αντικειμένων: Τα αντικείμενα με υψηλότερο z-index σχεδιάζονται πάνω από αντικείμενα με χαμηλότερο z-index Αριθμός (μπορεί να είναι αρνητικός) 0
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
object-z-index Παρόμοιο με το z-index, αλλά με χαμηλότερη προτεραιότητα. Ελέγχει τη σειρά σχεδίασης για επικαλυπτόμενα αντικείμενα. Παράδειγμα: Για δύο γραμμές που διασταυρώνονται και έχουν κείμενο: Χρησιμοποιήστε z-index ή major-z-index εάν θέλετε πρώτα να σχεδιάσετε τις δύο γραμμές και στη συνέχεια τις δύο λεζάντες. Χρησιμοποιήστε object-z-index εάν μία από τις γραμμές πρέπει να είναι εντελώς πάνω από την άλλη. Αριθμός (μπορεί να είναι αρνητικός) 0
modifier Καλύτερος έλεγχος για το αν θα δημιουργείται από το JOSM το προεπιλεγμένο σύμβολο γραμμής/κόμβου. Αυτό συμβαίνει όταν δεν βρίσκεται κατάλληλο στυλ (modifier=false) σε κανένα επίπεδο. false ή true false για την προεπιλεγμένο επίπεδο και true για οποιοδήποτε άλλο επίπεδο

Σημειώστε ότι για λόγους απόδοσης οι τιμές για τα τρία z-indexes περιορίζονται σε αριθμούς κινητής υποδιαστολής 24-bit, με μέγιστο 5 δεκαδικά ψηφία. Προς το παρόν, το εσωτερικό στυλ βαφής χάρτη χρησιμοποιεί τιμές με μέγιστο 2 ψηφία πριν και μετά το δεκαδικό διαχωριστικό. Για να αποφύγετε προβλήματα, χρησιμοποιήστε τιμές z-indexes μεταξύ -99.999 και +99.999. (Δείτε επίσης #14485)

Στυλ εικονιδίων και συμβόλων

Κλειδί Περιγραφή Μορφή Τιμής Προεπιλεγμένη Τιμή
icon-image Το εικονίδιο στη θέση του κόμβου. Δείτε επίσης Εικόνες. Εικόνες -
icon-opacity Αδιαφάνεια της εικόνας του εικονιδίου Αδιαφάνεια 1.0
icon-width Πλάτος του εικονιδίου. Εάν δοθεί μόνο μία από τις ιδιότητες icon-width και icon-height η εικόνα θα κλιμακωθεί αναλογικά. Το εικονίδιο διατηρεί το αρχικό μέγεθος αν δεν οριστεί ούτε icon-width ούτε icon-height. Αριθμός -
icon-height Ύψος του εικονιδίου. (Δείτε icon-width) Αριθμός -
icon-offset-x Μετατόπιση του εικονιδίου σε οριζόντια κατεύθυνση (θετικές τιμές προς τα δεξιά) (από το r8085) Αριθμός 0
icon-offset-y Μετακίνηση του εικονιδίου σε κάθετη κατεύθυνση (θετικές τιμές προς τα κάτω) (από το r8085) Αριθμός 0
icon-rotation Περιστροφή του εικονιδίου δεξιόστροφα ή αριστερόστροφα (αρνητική τιμή)(από το r8260) [rad], [rad]rad, [deg]°, [deg]deg, [grad]grad, [turn]turn (ορισμός)
ή μια βασική κατεύθυνση (π.χ. northeast ή sw);
ή way για να περιστρέψετε το εικονίδιο προς την κατεύθυνση της γονικής γραμμής.
Δείτε επίσης τις συναρτήσεις degree_to_radians, cardinal_to_radians.
Από την έκδοση 18678, η συνάρτηση parent_way_angle() είναι μια εναλλακτική λύση για την γραμμή: π.χ. way > node[...]::layer_x { ... icon-rotation: parent_way_angle(); ... }
-
icon-position Ορίστε τη θέση του εικονιδίου για περιοχές. Το ίδιο με text-position (από το r11730). center, inside, line center
symbol-shape Εμφάνιση ενός συμβόλου στη θέση του κόμβου square, circle, triangle, pentagon, hexagon, heptagon, octagon, nonagon, decagon -
symbol-size Μέγεθος του συμβόλου Ο Αριθμός, μπορεί να είναι σχετικός ("+4") 10
symbol-stroke-width πλάτος περιγράμματος Πλάτος 1.0 εάν το symbol-stroke-color έχει οριστεί
symbol-stroke-color χρώμα γραμμής Χρώμα #FFC800 εάν το symbol-stroke-width έχει οριστεί
symbol-stroke-opacity γραμμής αδιαφάνειας Αδιαφάνεια 1.0
symbol-fill-color χρώμα γεμίσματος του σχήματος Χρώμα blue, εκτός αν το symbol-stroke-width ή το symbol-stroke-color έχει οριστεί
symbol-fill-opacity χρώμα αδιαφάνειας Αδιαφάνεια 1.0
text-..., font-... δείτε τις γενικές ιδιότητες Κειμένου και Γραμματοσειράς

Μην βασίζεστε στις προεπιλεγμένες τιμές για τις ιδιότητες symbol-... (εκτός από το opacity). Προορίζονται για "γρήγορα & πρόχειρα" στυλ και καλό είναι να ορίζονται σε μια σαφή τιμή.

Στυλ γραμμής

Κλειδί Περιγραφή Μορφή Τιμής Προεπιλεγμένη Τιμή
width Πλάτος γραμμής Πλάτος -
color Χρώμα γραμμής Χρώμα τιμή του fill-color ή
(αν δεν έχει οριστεί) το προεπιλεγμένο
χρώμα του JOSM (#808080)
opacity Πόσο διαφανής είναι η γραμμή. Αδιαφάνεια 1.0
dashes Ένας πίνακας εναλλασσόμενων μηκών ενεργοποίησης/απενεργοποίησης λίστα αριθμών, π.χ.
> 15, 5

μπορεί να γραφτεί ως έκφραση:
> list(3, 4, 5, 6)

ή η λέξη-κλειδί none
για να απενεργοποιήσετε τις παύλες
-
dashes-offset μετατοπίστε το μοτίβο παύλας κατά ένα ορισμένο ποσό Αριθμός (>= 0) 0
dashes-background-color Το χρώμα που θα χρησιμοποιηθεί ανάμεσα στις παύλες (προαιρετικό) Χρώμα -
dashes-background-opacity Τιμή αδιαφάνειας για το φόντο των παυλών Αδιαφάνεια Τιμή της αδιαφάνειας opacity
linecap Σχήμα στο τέλος της γραμμής (δείτε εδώ) none, round, square none
linejoin Σχήμα στις γωνίες της γραμμής round, miter, bevel round
miterlimit Ισχύει για linejoin: miter.
Ορίζει τη μέγιστη υπέρβαση όταν τα τμήματα γραμμής συναντώνται σε πολύ μικρή γωνία
Αριθμός (>= 1.0) 10.0
offset Μετακίνηση γραμμής προς τα αριστερά ή τα δεξιά (όταν κοιτάτε προς την κατεύθυνση της διαδρομής).
Αυτό θα μπορούσε να χρησιμοποιηθεί για να σχεδιάσετε πολλαπλές λωρίδες για μία κατεύθυνση ή να επισημάνετε την αριστερή και τη δεξιά πλευρά μιας διαδρομής διαφορετικά.
Αριθμός (θετική τιμή μετακινεί τη γραμμή προς τα αριστερά,
αρνητική προς τα δεξιά)
0
text-position ορισμός σε line, αν το κείμενο πρέπει να σχεδιαστεί κατά μήκος της γραμμής line, center -
text-...,
font-...
δείτε γενικές ιδιότητες Κειμένου και Γραμματοσειράς
repeat-image επαναλαμβανόμενη εικόνα κατά μήκος μιας γραμμής (από την έκδοση r5801) Εικόνα -
repeat-image-width Πλάτος της εικόνας (προαιρετικό, δείτε το icon-width) (από την έκδοση r5811) Αριθμός -
repeat-image-height Ύψος της εικόνας (προαιρετικό) (από την έκδοση r5811) Αριθμός -
repeat-image-align Στοίχιση της εικόνας.
Η επάνω, κάτω άκρη ή η (οριζόντια) κεντρική γραμμή της εικόνας θα είναι κατά μήκος της γραμμής (από την έκδοση r5801)
top, center, bottom center
repeat-image-offset Μετατόπιση από τη γραμμή (από την έκδοση r5801) Αριθμός 0
repeat-image-spacing Απόσταση μεταξύ επαναλαμβανόμενων εικόνων (από την έκδοση r5801) Αριθμός 0
repeat-image-phase Αρχική απόσταση στην αρχή της γραμμής (από την έκδοση r5812) Αριθμός 0
repeat-image-opacity Αδιαφάνεια της επαναλαμβανόμενης εικόνας (από την έκδοση r16700) Αριθμός 1.0

Όλες αυτές οι ιδιότητες (εκτός από το text-... και το font-...) υπάρχουν επίσης με το πρόθεμα casing-. Το casing είναι ένα δεύτερο, ανεξάρτητο στοιχείο γραμμής που σχεδιάζεται κάτω από την κανονική γραμμή και μπορεί να χρησιμοποιηθεί για να σχεδιάσουμε ένα λεπτό περίγραμμα γύρω από τη γραμμή με άλλο χρώμα.

Κλειδί Περιγραφή Μορφή Τιμής Προεπιλεγμένη Τιμή
casing-width Πλάτος του περιγράμματος και στις δύο πλευρές της κύριας γραμμής.
Στο JOSM < 5214: Συνολικό πλάτος του περιγράμματος
Πλάτος (αναφέρεται στο width αν έχει οριστεί σχετικό πλάτος) -
casing-color Χρώμα περιγράμματος Χρώμα Τιμή του fill-color ή (αν δεν έχει οριστεί)
το προεπιλεγμένο χρώμα του JOSM για μη επισημασμένα αντικείμενα (#808080)
casing-opacity Πόσο διαφανές είναι το περίγραμμα. Αδιαφάνεια 1.0
casing-... ... ... ...

Παρόμοια με το casing-, υπάρχει επίσης το πρόθεμα left-casing- και το right-casing-. Σχεδιάζει επιπλέον γραμμές αριστερά και δεξιά της κύριας γραμμής.

Στυλ περιοχής

Κλειδί Περιγραφή Μορφή Τιμής Προεπιλεγμένη Τιμή
fill-color Χρώμα με το οποίο θα γεμίσει η περιοχή. Μέχρι το 11700, το στοιχείο άλφα είχε οριστεί σε 50 για να δημιουργήσει ένα εφέ διαφάνειας. Χρώμα -
fill-image Μοτίβο εικόνας Εικόνα -
fill-extent Ορίστε αυτήν την ιδιότητα, για να σχεδιάσετε μόνο το περίγραμμα της περιοχής. Ο αριθμός καθορίζει πόσο μακριά θα γεμίσει από το περίγραμμα της περιοχής προς το κέντρο. (Εάν δεν οριστεί, η περιοχή θα γεμίσει πλήρως) (από την έκδοση r9008) Αριθμός -
fill-extent-threshold Ορίστε αυτήν την ιδιότητα, για να σχεδιάσετε ολόκληρη την περιοχή όταν επιτευχθεί το δεδομένο ποσοστό κάλυψης. Μπορεί να είναι μεγαλύτερο από 100% καθώς η καλυμμένη περιοχή εκτιμάται ως περίμετρος * έκταση. Αριθμός -
fill-opacity Πόσο διαφανές είναι το γέμισμα; ισχύει τόσο για το χρώμα όσο και για την εικόνα Αδιαφάνεια 0.2 (από την έκδοση r11700, 1.0 πριν από αυτό)
(μπορεί να αλλάξει με τις προτιμήσεις mappaint.fillalpha και
mappaint.fill-image-alpha)
text-position Ορίστε στο center, εάν το κείμενο πρέπει να σχεδιαστεί στο κέντρο της περιοχής. Ορίστε στο inside για να τοποθετήσετε το κείμενο εντελώς μέσα στην περιοχή. (από την έκδοση r11722) line, center, inside -
text-..., font-... δείτε γενικές ιδιότητες κειμένου και γραμματοσειράς

Απαιτούμενες ιδιότητες για τη δημιουργία ενός στυλ Περιοχής: fill-color ή fill-image

Ιδιότητες Κειμένου και Γραμματοσειράς

Κλειδί

Περιγραφή

Μορφή Τιμής

Προεπιλεγμένη Τιμή

text

Πώς να βρείτε το κείμενο της ετικέτας.
Δεν εμφανίζεται ετικέτα, εκτός εάν υπάρχει αυτή η εντολή.

auto

Αυτόματη εξαγωγή του κειμένου. Οι προεπιλεγμένες ετικέτες ονόματος είναι: "name:"+<LANG>,
"name", "int_name", "ref", "operator", "brand" και "addr:housenumber".

Διαμορφώστε μια λίστα ονομάτων ετικετών στην προτίμηση "mappaint.nameOrder"
για να

αλλάξετε αυτήν τη λίστα. (Μετά την αλλαγή της λίστας, απαιτείται επανεκκίνηση του JOSM.)

String

Δηλώνει το κλειδί της ετικέτας της οποίας η τιμή χρησιμοποιείται ως κείμενο.

Expressions

Μπορείτε να εισαγάγετε μια έκφραση για να υπολογίσετε το κείμενο που θα εμφανιστεί. Παραδείγματα:

  • eval("this is a static text") - αποδίδει ένα στατικό κείμενο
  • eval(concat(tag("first"), "-", tag("second"))) - εμφανίζει
    τις συνενωμένες ετικέτες "first" και "second"

""

Για να διαγράψετε ένα προηγούμενο σύνολο κειμένου.

-

text-color το χρώμα κειμένου Χρώμα white για γραμμές και κόμβους,
#c0c0c0 για περιοχές
(JOSM "text" και"areatext"
προτιμήσεις χρώματος)
text-opacity πόσο διαφανές είναι το κείμενο Αδιαφάνεια 1.0
text-offset-x μετατόπιση του κειμένου οριζόντια,
(δεν υποστηρίζεται για κείμενο κατά μήκος της γραμμής)
Αριθμός 0
text-offset-y
(μπορεί επίσης να γραφτεί ως
text-offset)
μετατόπιση του κειμένου κατακόρυφα, οι θετικές τιμές μετατοπίζουν το κείμενο στην προς τα πάνω κατεύθυνση Αριθμός 0
text-halo-radius μέγεθος περιγράμματος φόντου κειμένου
(για να γίνει το κείμενο ορατό στο φόντο
με παρόμοιο χρώμα)
Αριθμός -
text-halo-color χρώμα περιγράμματος κειμένου Χρώμα συμπλήρωμα του χρώματος κειμένου
text-halo-opacity διαφάνεια για το περίγραμμα κειμένου Αδιαφάνεια 1.0
text-anchor-horizontal οριζόντια τοποθέτηση ετικέτας κειμένου left, center, right right
text-anchor-vertical Κατακόρυφη τοποθέτηση ετικέτας κειμένου above, top, center, bottom, below bottom
text-rotation Περιστροφή του κειμένου δεξιόστροφα ή αριστερόστροφα (αρνητική τιμή)
(από την έκδοση r16253)
[rad], [rad]rad, [deg]°, [deg]deg, [grad]grad, [turn]turn
(ορισμός) ή μια βασική κατεύθυνση (π.χ. northeast ή sw);
ή way για να περιστρέψετε το κείμενο προς την κατεύθυνση της γονικής γραμμής.
Δείτε επίσης τις συναρτήσεις degree_to_radians, cardinal_to_radians.
Από την έκδοση 18678, η συνάρτηση parent_way_angle() είναι μια εναλλακτική λύση για το way: π.χ. way > node[...]::layer_x { ... text-rotation: parent_way_angle(); ... }
(Σημειώστε ότι η κατεύθυνση σημαίνει το σημείο όπου βλέπει το πάνω άκρο του κειμένου.
Αυτό σημαίνει ότι με την προεπιλεγμένη κατεύθυνση του βορρά το κείμενο ρέει προς τα ανατολικά
(με γλώσσα από αριστερά προς τα δεξιά).
Επομένως, αν θέλετε να ρέει π.χ. προς τα νότια, πρέπει να ορίσετε την ανατολή.)
-
text-position δείτε Στυλ περιοχής και Στυλ γραμμής
font-family οικογένεια γραμματοσειράς Γραμματοσειρά "Droid Sans"
(προτίμηση JOSM "mappaint.font")
font-size μέγεθος γραμματοσειράς Αριθμός 8
(προτίμηση JOSM "mappaint.fontsize")
font-weight έντονα γράμματα ή όχι bold, normal normal
font-style πλάγια γράμματα ή όχι italic, normal normal

Ιδιότητες ορισμένες από τον χρήστη

Επεξηγήσεις τιμών ιδιοτήτων

Width

  • 14.0 (οποιοσδήποτε θετικός αριθμός)
  • default (χρήση του προεπιλεγμένου πλάτους γραμμής του JOSM, το οποίο είναι 2, αλλά μπορεί να ρυθμιστεί)
  • thinnest (σχεδιάζει τη γραμμή όσο το δυνατόν πιο λεπτή)
  • +3 (με το σύμβολο συν μπροστά) προσθέτει την ποσότητα στο πλάτος στο προεπιλεγμένο επίπεδο. Αυτό ισχύει μόνο για στυλ που δεν βρίσκονται στο προεπιλεγμένο επίπεδο, π.χ. highlights. Ένας άλλος τρόπος για να το γράψετε αυτό θα ήταν prop("width","default")+3. Για το casing-width, αυτό αναφέρεται στην τιμή width στο ίδιο επίπεδο.

Image

Δείτε στις Εικόνες.

Color

  • ονομασμένο χρώμα όπως αναφέρεται σε αυτή τη λίστα
  • στυλ html: #RRGGBB, #RGB, #RRGGBBAA
  • rgb(/*r*/, /*g*/, /*b*/) - τιμή rgb με ορίσματα από 0.0 έως 1.0
  • rgba(/*r*/, /*g*/, /*b*/, /*alpha*/) - τιμή rgb με άλφα
  • hsb_color(/*hue*/, /*saturation*/, /*brightness*/) - χρώμα από το χρωματικό χώρο HSB
  • αν το χρώμα έχει πρόθεμα με όνομα και #, π.χ. color: highway_track#6e541c; τότε θα εμφανιστεί στις Ρυθμίσεις Χρώματος και οι τελικοί χρήστες μπορούν να το προσαρμόσουν μόνοι τους

Opacity

  • από 0.0 (διαφανές) έως 1.0 (αδιαφανές)

String

  • οποιαδήποτε ακολουθία χαρακτήρων, σε εισαγωγικά, π.χ. "images/fill.png". Αν η συμβολοσειρά είναι αναγνωριστικό, τα εισαγωγικά είναι προαιρετικά. (Το σύμβολο εισαγωγικών και η ανάποδη κάθετος μπορούν να έχουν χαρακτήρα διαφυγής.)

Number

  • ακέραιος ή κινητή υποδιαστολή (σε απλή μορφή π.χ. 0.3). Γενικά, μπορεί να είναι αρνητικός, αλλά οι περισσότερες ιδιότητες δεν υποστηρίζουν αρνητικούς αριθμούς
  • έχει ειδική σημασία εάν βάλετε ένα σύμβολο "+" μπροστά (σχετικό πλάτος)

Εκφράσεις αξιολόγησης

Δείτε το Javadoc of Functions για την ενημερωμένη λίστα συναρτήσεων που υποστηρίζει η υλοποίηση MapCSS του JOSM.

+, -, *, /
αριθμητικές πράξεις
||, &&, !
λογικές πράξεις
<, >, <=, >=, ==, !=
πράξεις σύγκρισης
asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (από το r17759), random, round, signum, sin, sinh, sqrt, tan, tanh
η συνήθης έννοια, λεπτομέρειες
cond(b, fst, snd)
b ? fst : snd
εάν (b) τότε fst αλλιώς snd
list(a, b, ...)
δημιουργία λίστας τιμών, π.χ. για την ιδιότητα dashes
get(lst, n)
λήψη του nοστού στοιχείου της λίστας lst (η μέτρηση ξεκινά από το 0) [από το r5699]
split(sep, str)
διαιρεί τη συμβολοσειρά str σε εμφανίσεις της διαχωριστικής συμβολοσειράς sep, επιστρέφει μια λίστα [από το r5699]
prop(p_name)
τιμή της ιδιότητας p_name του τρέχοντος επιπέδου, π.χ. prop("width")
prop(p_name, layer_name)
ιδιότητα από το επίπεδο layer_name
is_prop_set(p_name)
true, αν η ιδιότητα p_name έχει οριστεί για το τρέχων επίπεδο
is_prop_set(p_name, layer_name)
true, αν η ιδιότητα p_name έχει οριστεί για το επίπεδο layer_name
tag(key_name)
λήψη της τιμής του κλειδιού key_name από το συγκεκριμένο αντικείμενο
parent_tag(key_name)
λήψη της τιμής του κλειδιού key_name από το γονικό αντικείμενο
parent_tags(key_name)
επιστρέφει όλες τις τιμές των γονέων για το κλειδί key_name ως λίστα ταξινομημένη με φυσική σειρά [από το r8775]
has_tag_key(key_name)
true, αν το αντικείμενο έχει μια ετικέτα με το δεδομένο κλειδί
rgb(r, g, b)
δημιουργία τιμής χρώματος (ορίσματα από 0.0 έως 1.0)
hsb_color(h, s, b)
δημιουργία χρώματος από απόχρωση, κορεσμό και φωτεινότητα (ορίσματα από 0.0 έως 1.0) [από το r6899]
red(clr), green(clr), blue(clr)
λήψη τιμής των καναλιών χρώματος στο μοντέλο χρωμάτων rgb
alpha(clr)
λήψη της τιμής άλφα του δεδομένου χρώματος [από το r6749]
length(str)
μήκος μιας συμβολοσειράς
count(lst)
μήκος μιας λίστας, δηλαδή, μετράει τα στοιχεία της [από το r7162]
length(lst)
μήκος μιας λίστας ([από το r5699] – έχει καταργηθεί από το r7162
any(obj1, obj2, ...)
επιστρέφει το πρώτο αντικείμενο που δεν είναι null (παλιότερα ονομαζόταν coalesce, [από το r7164])
concat(str1, str2, ...)
συνενώνει πολλές συμβολοσειρές σε μία
join(sep, str1, str2, ...)
συνενώνει συμβολοσειρές, χρησιμοποιώντας το sep ως διαχωριστικό [since r6737]
join_list(sep, list_name)
συνενώνει τα στοιχεία της λίστας list_name σε μία συμβολοσειρά, με διαχωριστικό sep [από το r8775]
upper(str)
μετατρέπει τη συμβολοσειρά σε κεφαλαία γράμματα [από το r11756]
lower(str)
μετατρέπει τη συμβολοσειρά σε πεζά γράμματα [από το r11756]
title(str)
μετατρέπει τη συμβολοσειρά σε κεφαλαία γράμματα τίτλου [από το r17613] ("i am FINE""I Am Fine")
trim(str)
αφαιρεί τα αρχικά και τα τελικά κενά από τη συμβολοσειρά [από το r11756]
trim_list(list_name)
αφαιρεί τα αρχικά και τα τελικά κενά από μια λίστα συμβολοσειρών, θα αφαιρέσει τις καταχωρήσεις που είναι κενές στη συνέχεια [από το r15591]
JOSM_search("...")
true, εάν η αναζήτηση JOSM εφαρμόζεται στο αντικείμενο
tr(str, arg0, arg1, ...)
μεταφράζει από τα Αγγλικά στην τρέχουσα γλώσσα (μόνο για συμβολοσειρές στη διεπαφή χρήστη JOSM) [από το r6506]
regexp_test(regexp, string)
ελέγχει εάν το string ταιριάζει με το μοτίβο regexp [από το r5699]
regexp_test(regexp, string, flags)
ελέγχει εάν το string ταιριάζει με το μοτίβο regexp; το είναι μια συμβολοσειρά που μπορεί να περιέχει "i" (δεν διακρίνει πεζά-κεφαλαία), "m" (πολλαπλών γραμμών) και "s" ("όλες οι τελείες") [από το r5699]
regexp_match(regexp, string)
Προσπαθεί να ταιριάξει το string με το μοτίβο regexp. Επιστρέφει μια λίστα ομάδων καταγραφής σε περίπτωση επιτυχίας. Το πρώτο στοιχείο (δείκτης 0) είναι η πλήρης αντιστοίχιση (δηλαδή, string). Περαιτέρω στοιχεία αντιστοιχούν στα μέρη της κανονικής έκφρασης που βρίσκονται σε αγκύλες. [από το r5701]
regexp_match(regexp, string, flags)
Προσπαθεί να ταιριάξει το string με το μοτίβο regexp. Επιστρέφει μια λίστα ομάδων καταγραφής σε περίπτωση επιτυχίας. Το πρώτο στοιχείο (δείκτης 0) είναι η πλήρης αντιστοίχιση (δηλαδή, string). Περαιτέρω στοιχεία αντιστοιχούν στα μέρη της κανονικής έκφρασης που βρίσκονται σε αγκύλες. Το flags είναι μια συμβολοσειρά που μπορεί να περιέχει τα "i" (χωρίς διάκριση πεζών-κεφαλαίων), "m" (πολλαπλών γραμμών) και το "s" ("όλες οι τελείες") [από το r5701]
substring(str, idx)
επιστρέφει τη δευτερεύουσα συμβολοσειρά του str, ξεκινώντας από τον δείκτη idx (με δείκτη 0) [από το r6534]
substring(str, start, end)
επιστρέφει τη δευτερεύουσα συμβολοσειρά του str, ξεκινώντας από τον δείκτη start (συμπεριλαμβανομένου) έως το end (εκτός) (με δείκτη 0) [από το r6534], ένας αρνητικός δείκτης end μετράει από το τέλος της συμβολοσειράς [από το r19259]
replace(string, old, new)
Αντικαθιστά οποιαδήποτε εμφάνιση της δευτερεύουσας συμβολοσειράς old μέσα στη συμβολοσειρά string με το κείμενο new
osm_id()
επιστρέφει το OSM id του τρέχοντος [από το r5699]
osm_user_name()
επιστρέφει το όνομα χρήστη OSM που τροποποίησε τελευταίο το τρέχον αντικείμενο [από το r15246]
osm_user_id()
επιστρέφει το id χρήστη OSM που τροποποίησε τελευταίο το τρέχον αντικείμενο [από το r15246]
osm_version()
επιστρέφει τον αριθμό έκδοσης OSM του τρέχοντος αντικειμένου [από το r15246]
osm_changeset_id()
επιστρέφει το id του συνόλου αλλαγών στο οποίο μεταφορτώθηκε τελευταία φορά το τρέχον αντικείμενο [από το r15246]
osm_timestamp()
επιστρέφει τον χρόνο της τελευταίας τροποποίησης του τρέχοντος αντικειμένου, ως χρονική σφραγίδα [από το r15246]
parent_osm_id()
επιστρέφει το OSM id του γονικού αντικειμένου (που ταιριάζει με τον επιλογέα θυγατρικών) [από το r13094]
URL_encode(str)
κωδικοποιεί μια συμβολοσειρά σε μορφή percent-encode. Χρήσιμο για δεδομένα σε URL [από το r6805]
URL_decode(str)
αποκωδικοποιεί μια συμβολοσειρά σε μορφή percent-decode. [από το r11756]
XML_encode(str)
αντικαθιστά ειδικούς χαρακτήρες σε xml. Π.χ. το < γίνεται &lt;, άλλοι ειδικοί χαρακτήρες: >, ", ', &, \n, \t και \r [από το r6809]
CRC32_checksum(str)
υπολογίζει το άθροισμα ελέγχου CRC32 μιας συμβολοσειράς (το αποτέλεσμα είναι ακέραιος από 0 έως 232-1) [από το r6908]
siunit_length(str)
μετατρέπει μονάδες μήκους σε μέτρα (ανεκτικό σε σφάλματα, αγνοεί τα κενά) [από το r19089]
is_right_hand_traffic()
ελέγχει αν στην τρέχουσα τοποθεσία ισχύει κυκλοφορία δεξιάς ή αριστερής κατεύθυνσης. [από το r7193]
number_of_tags()
επιστρέφει τον αριθμό ετικετών του τρέχοντος αντικειμένου OSM [από το r7237]
print(o)
εκτυπώνει μια αναπαράσταση του o στη γραμμή εντολών (για εντοπισμό σφαλμάτων) [από το r7237]
println(o)
εκτυπώνει μια αναπαράσταση του o στη γραμμή εντολών, ακολουθούμενη από μια νέα γραμμή (για εντοπισμό σφαλμάτων) [από το r7237]
JOSM_pref(key, default)
Λήψη τιμής από τις προηγμένες προτιμήσεις του 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); } θα δημιουργήσει τώρα μια ιδιότητα χρώματος.]
setting()
για χρήση μιας ρύθμισης στυλ [από το r7450]
degree_to_radians()
επιστρέφει την κατεύθυνση σε ακτίνα δοσμένη σε μοίρες [από το r8260]
cardinal_to_radians()
επιστρέφει μια κατεύθυνση στον ορίζοντα σε ακτίνα [από το r8260]
waylength()
επιστρέφει το μήκος της γραμμής σε μέτρα [από το r8253]
areasize()
επιστρέφει το εμβαδόν μιας κλειστής γραμμής σε τετραγωνικά μέτρα [από το r8253]
at(lat,lon)
επιστρέφει true αν το κεντροϊδές του αντικειμένου βρίσκεται στις δοσμένες συντεταγμένες lat/lon, e.g. π.χ. για έλεγχο κόμβων στο "null island" node[at(0.0,0.0)] [από το r12514]
is_similar(str1, str2)
επιστρέφει true αν οι δύο συμβολοσειρές είναι παρόμοιες, αλλά όχι ταυτόσημες, δηλαδή έχουν απόσταση Levenshtein 1 ή 2. Παράδειγμα: way[highway][name][is_similar(tag(name), "Main Street")] ελέγχει για δρόμους με πιθανό τυπογραφικό λάθος στο όνομα (π.χ. Main Streeg). [από το r14371]
gpx_distance()
επιστρέφει τη μικρότερη απόσταση μεταξύ του αντικειμένου OSM και ενός σημείου GPX [από το r14802]
count_roles()
επιστρέφει τον αριθμό των πρωταρχικών σε μια σχέση με τους καθορισμένους ρόλους [από το r15275]
sort(str1, str2, str3, ...)
ταξινομεί έναν πίνακα συμβολοσειρών [από το r15279]
sort_list(list_name)
ταξινομεί μια λίστα συμβολοσειρών [από το r15279]
tag_regex(regex)
επιστρέφει λίστα που περιέχει τις τιμές των κλειδιών που ταιριάζουν με το regex [since r15317]
to_boolean(str)
επιστρέφει το όρισμα συμβολοσειράς ως boolean [από το r16110]
to_byte(str)
επιστρέφει το όρισμα συμβολοσειράς ως byte [από το r16110]
to_short(str)
επιστρέφει το όρισμα συμβολοσειράς ως short [από το r16110]
to_int(str)
επιστρέφει το όρισμα συμβολοσειράς ως int [από το r16110]
to_long(str)
επιστρέφει το όρισμα συμβολοσειράς ως long [από το r16110]
to_float(str)
επιστρέφει το όρισμα συμβολοσειράς ως float [από το r16110]
to_double(str)
επιστρέφει το όρισμα συμβολοσειράς ως double [από το r16110]
uniq(str1, str2, str3, ...)
επιστρέφει λίστα συμβολοσειρών με μοναδικές τιμές από έναν πίνακα συμβολοσειρών [από το r15323]
uniq_list(list_name)
επιστρέφει λίστα συμβολοσειρών με μοναδικές τιμές από μια λίστα συμβολοσειρών [από το r15323]
parent_way_angle()
επιστρέφει τη γωνία της γονικής γραμμής ως αριθμό double σε ακτίνα [από το r18664] (δείτε: text-rotation ή icon-rotation)
convert_primitive_to_string(PrimitiveId)
επιστρέφει το ID του πρωταρχικού ως συμβολοσειρά [από το r18829]
convert_primitives_to_string(PrimitiveId, PrimitiveId, ...)
επιστρέφει λίστα πρωταρχικών IDs που έχουν μετατραπεί σε συμβολοσειρές [από το r18829]
parent_osm_primitives(optional key, optional value)
επιστρέφει λίστα πρωταρχικών IDs που ταιριάζουν με το κλειδί και την τιμή (αν δοθούν) [από το r18829]

Παραδείγματα

  • σύμβολο κύκλου για τον αριθμό του σπιτιού με μέγεθος ανάλογα με τον αριθμό των ψηφίων
    node[addr:housenumber] { 
        symbol-shape: circle; 
        symbol-size: eval((min(length(tag("addr:housenumber")), 3) * 5) + 3); 
        symbol-fill-color: #B0E0E6; 
    
        text: "addr:housenumber"; 
        text-anchor-horizontal: center; 
        text-anchor-vertical: center; 
        text-offset-x: -1; 
        text-offset-y: -1; }
        
    node[addr:housenumber]::hn_casing { 
        z-index: -100; 
        symbol-shape: circle; 
        symbol-size: +2; 
        symbol-fill-color: blue; 
    }
    
  • αντιστροφή χρωμάτων
    *::* {
        color: eval(rgb(1 - red(prop(color)), 1 - green(prop(color)), 1 - blue(prop(color))));
        fill-color: eval(rgb(1 - red(prop(fill-color)), 1 - green(prop(fill-color)), 1 - blue(prop(fill-color))));
    }
    
  • τυχαία πράγματα
    way {
        width: eval(random() * 20);
        color: eval(rgb(random(), random(), random()));
    }
    
  • παράδειγμα αντιστοίχισης regexp: αλλαγή "nameXXXsubname" σε "name::subname"
    *[name=~/.+XXX.+/] 
    {
        _match: regexp_match("(.+?)XXX(.+)", tag("name"));
        text: concat(get(prop("_match"),1), "::", get(prop("_match"),2));
    }
    
  • βάψιμο κτιρίων σε διαφορετικά χρώματα ανάλογα με την οδό στις ετικέτες διευθύνσεων
    area[building][addr:street] {
        fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7);
        fill-opacity: 0.8;
    }
    
  • περίγραμμα στο εσωτερικό μιας περιοχής
    area[building]:clockwise {
        right-casing-width: 10;
    }
    area[building]:anticlockwise {
        left-casing-width: 10;
    }
    /* or */
    area[building][is_clockwise()] {
        right-casing-width: 10;
    }
    area[building][is_anticlockwise()] {
        left-casing-width: 10;
    }
    
  • επιλογέας χωρίς διάκριση πεζών-κεφαλαίων. Αυτό ταιριάζει: Name=Main Street, αλλά και με naMe=MAIN STREET
    way[/(?i)^name$/ =~ /(?i)^Main Street$/] {
    }
    

Σημειώσεις συμβατότητας

MapCSS 0.2

Γραμματική

  • Το way[oneway=yes] δεν έχει κάποια μαγική ιδιότητα, μπορείτε να χρησιμοποιήσετε το way[oneway?] στη θέση του
  • όχι @import
  • Το JOSM δεν απαιτεί το eval(...) να περιβάλλει εκφράσεις, αλλά για συμβατότητα με άλλες υλοποιήσεις MapCSS, συνιστάται να το γράφετε.

Ιδιότητες

Προς το παρόν, το JOSM δεν υποστηρίζει τις ακόλουθες ιδιότητες:

line:
image
label:
font-variant, text-decoration, text-transform, max-width
shield:
δεν υποστηρίζεται

Halcyon (Potlatch 2)

  • Η ετικέτα κειμένου τοποθετείται στο κέντρο του εικονιδίου. Για συμβατότητα με το Halcyon, βάλτε
    node { text-anchor-vertical: center; text-anchor-horizontal: center; }
    
    στην αρχή του φύλλου στυλ σας.
  • το τυπικό z-index στο Halcyon είναι 5, αλλά στο JOSM είναι 0
  • Το image: circle; αντιστοιχεί σε symbol-shape: circle;

Kothic

  • Το Kothic υποστηρίζει το eval, το οποίο πιθανόν να διαφέρει από το eval του JOSM.
  • Το Kothic καταλαβαίνει μονάδες μέτρησης, ενώ το JOSM υπολογίζει πάντα σε pixel.
  • Τα χαρακτηριστικά εξώθησης δεν είναι διαθέσιμα στο JOSM.

Ceyx

  • φαίνεται να χρησιμοποιεί [tunnel=1] αντί για [tunnel=yes] (Halcyon) ή [tunnel?] (JOSM)

Media queries (παρωχημένο)

Σημείωση: Τα media queries είναι παρωχημένα. Πρέπει να χρησιμοποιείτε κανόνες @supports αντ’ αυτών (δείτε παραπάνω).

Τα media queries χρησιμοποιούνται για να παραλείψετε ένα τμήμα του στυλ υπό ορισμένες συνθήκες. Συνήθως χρησιμοποιούνται όταν θέλετε να αξιοποιήσετε ένα χαρακτηριστικό που εισήχθη σε νεότερη έκδοση του JOSM, αλλά επιθυμείτε να έχετε και ένα εναλλακτικό στυλ για χρήστες παλαιότερων εκδόσεων. Αυτή η δυνατότητα εισήχθη με την r6970. Παράδειγμα:

@media (min-josm-version: 9789) {
    way[highway] {
        width: 4;
        color: orange;
    }
    /* φανταχτερά νέα πράγματα */
    /* ... */
}

@media (max-josm-version: 9788) {
    way[highway] {
        width: 4;
        color: blue;
    }
    /* εναλλακτική λειτουργία, χρησιμοποιώντας πιο απλά χαρακτηριστικά */
    /* ... */
}

Η σύνταξη ταιριάζει πολύ με την επίσημη σύνταξη css. Υποστηρίζονται οι ακόλουθες συνθήκες:

Συνθήκη μέσου

Περιγραφή

(min-josm-version: <number>)

Συμπερίλαβε μόνο την ενότητα @media όταν η τρέχουσα έκδοση του JOSM είναι μεγαλύτερη ή ίση με τον καθορισμένο αριθμό.

(max-josm-version: <number>)

Συμπερίλαβε μόνο την ενότητα @media όταν η τρέχουσα έκδοση του JOSM είναι μικρότερη ή ίση με τον καθορισμένο αριθμό.

(user-agent: <string>)

Συμπερίλαβε μόνο την ενότητα @media όταν το όνομα του επεξεργαστή/απεικονιστής ταιριάζει με το δοσμένο κείμενο. Στο JOSM, η μόνη αποδεκτή τιμή είναι josm.

Οι συνθήκες μπορούν να συνδυαστούν με and:

@media (min-josm-version: 6970) and (max-josm-version: 7014) {
 /* μόνο για εκδόσεις JOSM από 6970 έως 7014 */
}

Μπορείτε να συνδυάσετε πολλαπλές συνθήκες με κόμμα (λογικό ή):

@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) {
  /* για εκδόσεις JOSM 6970 έως 7014 και για τον επεξεργαστή με όνομα "myEditor" */
}

Εφόσον τα ερωτήματα πολυμέσων υποστηρίζονται μόνο στο JOSM 6970 και νεότερες εκδόσεις, θα πρέπει επίσης να το καθορίσετε ως ελάχιστη έκδοση JOSM στον επιλογέα μεταδεδομένων:

meta {
    min-josm-version: "6970"; /* Αυτό το στυλ χρησιμοποιεί ερωτήματα πολυμέσων */
    /* ... */
}
Last modified 4 weeks ago Last modified on 2025-08-15T21:07:06+02:00
Note: See TracWiki for help on using the wiki.