Άλλες γλώσσες:
- Ελληνικά
- English
- Esperanto
- français
- norsk bokmål
- Nederlands
- русский
- 简体中文
Table of Contents
Υλοποίηση MapCSS
Η υλοποίηση του MapCSS στο JOSM χρησιμοποιείται για τις εξής λειτουργίες:
- Τεχνοτροπίες Βαφής Χάρτη
- Κανόνες επικύρωσης, δείτε το ελεγκτής ετικετών MapCSS για το ειδικό μέρος μόνο για τους κανόνες.
- Παράθυρο Αναζήτησης
Συνιστάται η εγκατάσταση του 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) εξηγούνται παρακάτω.
Τύπος Επιλογέα
Επιλογέας | Περιγραφή | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
* | Ταιριάζει με οποιοδήποτε αντικείμενο | ||||||||||||||||
| Ταιριάζει με τα αντικείμενα osm του δεδομένου τύπου. | ||||||||||||||||
| Ταιριάζει με οποιαδήποτε περιοχή, ανεξάρτητα από το αν τα όρια της περιοχής έχουν αποδοθεί με μία μόνο γραμμή ή με ένα σύνολο γραμμών ενωμένων μέσω μιας σχέσης. area[natural=beach] {...} /* ... είναι ισοδύναμο με ... */ way[natural=beach], relation[type=multipolygon][natural=beach] {...}
Σημειώστε ότι το | ||||||||||||||||
|
Ο επιλογέας meta { title: "Parking lanes"; /* τίτλος που εμφανίζεται στο μενού */ icon: "logo_16x16x8.png"; /* μικρό εικονίδιο που εμφανίζεται στο μενού δίπλα στον τίτλο */ version: "1.2"; /* η έκδοση του στυλ */ description: "..."; /* μία ή δύο προτάσεις που περιγράφουν το στυλ */ author: "..."; /* ο/οι δημιουργός/οί του στυλ */ link: "https://..."; /* URL στην ιστοσελίδα του στυλ */ min-josm-version: 6789; /* η ελάχιστη έκδοση JOSM όπου λειτουργεί αυτό το στυλ */ } | ||||||||||||||||
| Ορισμένες πληροφορίες στυλ που δεν αφορούν συγκεκριμένα κόμβους, γραμμές ή σχέσεις. canvas { fill-color: #ffffea; /* το προηγούμενο χρώμα φόντου έχει καταργηθεί από το r7110 */ default-points: false; default-lines: false; }
|
Θυγατρικός Επιλογέας
Εάν ένας κόμβος είναι μέρος μιας γραμμής, λέμε ότι είναι θυγατρικό αυτής της γραμμής. Ομοίως, εάν ένας κόμβος, μια γραμμή ή μια σχέση είναι μέλος μιας σχέσης, λέμε ότι είναι θυγατρικό αυτής της σχέσης.
Στο 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 *[name =~ /^(?i)(parking)$/] /* ταιριάζει με parking, Parking, PARKING, PaRkInG,... */ *[name =~ /^(?U)(\p{Lower})+$/] /* το όνομα αποτελείται μόνο από πεζούς χαρακτήρες unicode */ |
| αρνητικό ταίριασμα Κανονικής Έκφρασης | *[surface!~/paved|unpaved/] |
στοιχείο του Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς που περιέχει τουλάχιστον ένα στοιχείο που ταιριάζει με τον αριστερό/ούς επιλογέα/είς. | *[amenity=parking] ∈ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); }
Βρίσκει περιοχές με | |
Υποσύνολο του ή Ίσο με
Συνώνυμο του | *[amenity=parking] ⊆ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); } | |
Υποσύνολο του ή Ίσο με Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και περιέχεται σε ένα ή περισσότερα στοιχεία που ταιριάζουν με τους αριστερούς επιλογείς. | area[amenity=parking] ⊇ *[amenity=parking]
Βρίσκει κόμβους ή περιοχές με | |
Ούτε Υποσύνολο του ούτε Ίσο με Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχει κανένα στοιχείο που ταιριάζει με τους αριστερούς επιλογείς. | *[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes]
Βρίσκει περιοχές amenity=parking που έχουν lit=yes αλλά δεν περιέχουν λάμπα. Να προσθέτετε πάντα | |
Ούτε Υπερσύνολο ούτε Ίσο με Ταιριάζει όταν ένα αντικείμενο ταιριάζει με τον δεξιό/ούς επιλογέα/είς και δεν περιέχεται σε καμία περιοχή που ταιριάζει με τους αριστερούς επιλογείς. | area[landuse=residential] ⊉ *[building]
Βρίσκει κτίρια που δεν βρίσκονται εντός καμίας περιοχής landuse=residential. Σημειώστε ότι αυτός ο τελεστής είναι πιθανό να παράγει ψευδώς θετικά αποτελέσματα όταν έχετε περιοχές | |
διάβαση | area:closed:areaStyle ⧉ area:closed:areaStyle { throwOther: tr("Overlapping Areas"); }
λαμβάνει υπόψη την ετικέτα |
Από την έκδοση 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, π.χ. |
(min-josm-version: <αριθμός>) |
Συμπεριλάβετε την ενότητα |
(max-josm-version: <αριθμός>) |
Συμπεριλάβετε την ενότητα |
(user-agent: <κείμενο>) |
Συμπεριλάβετε την ενότητα |
Οι συνθήκες μπορούν να συνδυαστούν με το και
:
@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
Ιδιότητες Κειμένου και Γραμματοσειράς
Κλειδί | Περιγραφή | Μορφή Τιμής | Προεπιλεγμένη Τιμή |
---|---|---|---|
|
Πώς να βρείτε το κείμενο της ετικέτας. |
αλλάξετε αυτήν τη λίστα. (Μετά την αλλαγή της λίστας, απαιτείται επανεκκίνηση του JOSM.) String
Expressions
| - |
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
|
Ιδιότητες ορισμένες από τον χρήστη
- Στις Τεχνοτροπίες Βαφής Χαρτη πορείτε να ορίσετε οποιαδήποτε προσαρμοσμένη ιδιότητα, π.χ.:
crc: CRC32_checksum(tag(name))/429496.7296;
- Στους κανόνες Επικύρωσης πρέπει να έχουν πρόθεμα
-
, π.χ.:-osmoseItemClassLevel: "1210/1/1";
Επεξηγήσεις τιμών ιδιοτήτων
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.0rgba(/*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. Π.χ. το
<
γίνεται<
, άλλοι ειδικοί χαρακτήρες:>
,"
,'
,&
,\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>) |
Συμπερίλαβε μόνο την ενότητα |
(max-josm-version: <number>) |
Συμπερίλαβε μόνο την ενότητα |
(user-agent: <string>) |
Συμπερίλαβε μόνο την ενότητα |
Οι συνθήκες μπορούν να συνδυαστούν με 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"; /* Αυτό το στυλ χρησιμοποιεί ερωτήματα πολυμέσων */ /* ... */ }