Version 1 (modified by 3 years ago) ( diff ) | ,
---|
Autres langues:
- English
- français
- Nederlands
- русский
- 简体中文
- @196 - @268
Table des Matières
Mise en œuvre de MapCSS
La mise en œuvre de MapCSS (en) de JOSM est utilisée pour les fonctionnalités :
- Modèles de rendu de cartes
- Règles de Validation, voir le vérificateur d'attributs MapCSS pour la partie spéciale réservée aux règles.
- Fenêtre Rechercher
Structure générale
Une feuille de style MapCSS comporte des règles de la forme suivante
selector { prop: value; /* ... */ prop: value; /* and/or */ set: class; set: .class; }
L'algorithme pour trouver des styles (modèles) pour un objet donné est le suivant :
- pour chaque règle : Si le sélecteur s'applique, définir les propriétés du bloc { } - analyser la liste finale des propriétés et générer des styles à partir d'elle
MapCSS utilise le format commentaire de CSS (/* ... */
). Notez que lorsque vous commentez de grandes parties d'un fichier MapCSS, certaines constructions peuvent provoquer une fin inattendue du commentaire, par exemple :
/* *[highway][name =~ /^R(\.|:)? .*/] { /* la fin de l'expression régulière définit la fin inattendue du commentaire */ throwWarning: tr("foo"); } */
Sélecteurs
Les sélecteurs désignent les expressions de filtre d'une règle MapCSS. La règle n'est appliquée à un objet de la carte que si ses sélecteurs correspondent à l'objet.
Les sélecteurs de MapCSS sont différents de ceux du CSS standard pour le Web. MapCSS ne prend en charge qu'un sous-ensemble des sélecteurs CSS standard, mais les étend avec des sélecteurs supplémentaires requis pour les données OSM.
Quelques exemples simples :
/* appliqué aux chemins avec un attribut highway=residential */ way[highway=residential] { /* les modèles */} /* appliqués aux nouveaux chemins fermés sur le calque 1, à condition qu'ils aient les attributs amenity=parking et access=customers, * et que le niveau de zoom soit compris entre 11 et 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 {..}
Les différents éléments (type-, zoom- ,sélecteur condition, pseudo classes, layer identifier, grouping et child combinator) sont expliqués ci-dessous.
Sélecteur de types
Selecteur | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
* | Correspond à n'importe quel objet. | ||||||||||||||||
| Correspond aux objets osm du type donné. | ||||||||||||||||
| Correspond à n'importe quelle zone, que le bord de la zone soit modélisé par un seul chemin ou par un ensemble de chemins reliés entre eux par une relation. area[natural=beach] {...} /* ... est équivalent à ... */ way[natural=beach], relation[type=multipolygon][natural=beach] {...}
Notez que | ||||||||||||||||
|
Le sélecteur meta { title: "Parking lanes"; /* titre affiché dans le menu */ icon: "logo_16x16x8.png"; /* petite icône affichée dans le menu à côté du titre */ version: "1.2"; /* la version du style */ description: "..."; /* une ou deux phrases de description du style */ author: "..."; /* le(s) auteur(s) du style */ link: "https://..."; /* URL vers la page web du style */ min-josm-version: 6789; /* la version minimale de JOSM sur laquelle ce style fonctionne */ } | ||||||||||||||||
| Certaines informations de style non spécifiques aux nœuds, aux chemins ou aux relations. canvas { fill-color: #ffffea; /* l'ancienne couleur de fond est dépréciée depuis la r7110 */ default-points: false; default-lines: false; }
|
Sélecteur enfant
Si un nœud fait partie d'un chemin, on dit qu'il est enfant de ce chemin. De même, si un nœud, un chemin, ou une relation est membre d'une relation, on dit qu'il est enfant de cette relation.
Dans MapCSS, vous pouvez utiliser un sélecteur enfant qui ne correspond que si l'objet parent et l'objet enfant correspondent.
Exemple:
/* * ne correspond que pour un chemin qui est un enfant d'une relation avec les attributs * type=route et route=foot */ relation[type=route][route=foot] > way {...}
Notes:
- Le sélecteur de zoom et l'identifiant de calque ne sont pertinents que pour la partie à droite du signe >.
- Les fonctions prop() et is_prop_set() ne sont supportées que sur la partie droite du signe >.
- Les fonctions parent_tag et parent_tags (voir ci-dessous) peuvent être utilisées pour accéder aux tags du ou des parents.
- Pour des raisons de compatibilité avec la norme MapCSS 0.2, la fonction
relation[type=route][route=foot] chemin {/*...*/}
, sans le signe supérieur>
est également supportée. Toutefois, aucun de lien ne peut être spécifié dans ce cas.
Sélecteur parent
En plus des sélecteurs enfant, JOSM supporte la notion de sélecteur parent. Notez que les sélecteurs parent sont une extension de MapCSS spécifique à JOSM qui n'est pas présente dans les autres implémentations de MapCSS.
Tout comme le sélecteur enfant, le sélecteur parent ne correspond que si l'objet parent et l'objet enfant correspondent. Contrairement au sélecteur enfant, le caractère < est utilisé.
Contrairement au sélecteur enfant, l'objet parent sera "sélectionné". En d'autres termes, les propriétés du Bloc de Déclaration {{{...}}}
s'appliquent à l'objet situé à droite du signe "<".
Exemple:
/* * correspond à un highway dont au moins un nœud est marqué comme traffic_calming=* */ node[traffic_calming] < way[highway] {...}
Sélecteur de condition
Les sélecteurs peuvent inclure un ensemble de conditions. Si l'une de ces conditions est évaluée à false, le sélecteur ne correspond pas et la règle de style n'est pas appliquée.
Une condition d'attribut spécifie une condition sur un des attributs d'un objet OSM.
Opérateur | Description | Exemple |
---|---|---|
| Correspondance exacte de la valeur. | way[highway=residential] /* est sensible à la casse, c'est-à-dire qu'il ne correspond PAS, par exemple, à highway=Residential ou à Highway=residential */ node[name="My name"] /* utiliser des guillemets si la clé ou la valeur comporte des espaces */ node["name:ru"="Калининград"] /* utiliser des guillemets si la clé ou la valeur comprend des caractères spéciaux comme des deux-points ou des caractères unicodes */ |
| Valeur non équivalente | way[highway!=residential] node[name!="My name"] node["name:ru"!="Калининград"] |
| Comparaison pour les valeurs numériques. | node[population >= 50000] /* population supérieure ou égale à 50000 */ node[ele = 3000] /* altitude avec exactement 3000 mètres */ |
| Correspondance du préfixe | node[name ^= "myprefix"] /* la valeur commence par 'myprefix' */ |
| Correspondance du suffixe | node[name $= "mypostfix"] /* la valeur se termine par 'mypostfix' */ |
| Correspondance de sous-chaîne | node[name *= "my substring"] /* La valeur contient la sous-chaîne 'my substring' */ |
| Membre de liste | *[vending~=stamps] /* la valeur de l'attribut pour l'attribut 'vending' est une liste de valeurs séparées par des ; */ /* et l'une de ces valeurs est 'stamps' */ |
| Concordance avec une Expression régulière | *[name=~/^My_pattern.*/] /* la valeur de l'attribut 'name' correspond à l'expression régulière '^My_pattern.*' */ /* Notez que les expressions régulières doivent être entourées de /.../ */
La Concordance insensible à la casse peut être activée par l'expression drapeau intégrée *[name =~ /^(?i)(parking)$/] /* Concordance avec parking, Parking, PARKING, PaRkInG,... */ *[name =~ /^(?U)(\p{Lower})+$/] /* le nom est composé uniquement de caractères unicode minuscules */ |
| Concordance négative de l'expression régulière | *[surface!~/paved|unpaved/] |
| élément de Concordance quand un objet correspondant au(x) sélecteur(s) de droite contient au moins un élément qui correspond au(x) sélecteur(s) de gauche. | *[amenity=parking] ∈ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); }
Trouve les zones avec |
| Sous-ensemble de ou égal à
Synonyme de | *[amenity=parking] ⊆ area[amenity=parking] { throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); } |
| Combinaison supérieure ou égale à Concordance lorsqu'un objet correspond au(x) sélecteur(s) de droite et est contenu dans un ou plusieurs éléments qui correspondent aux sélecteurs de gauche. | area[amenity=parking] ⊇ *[amenity=parking]
trouve les nœuds ou les zones avec |
| Ni un sous-ensemble de Ni égal à Concordance lorsqu'un objet correspond au(x) sélecteur(s) de droite et ne contient aucun élément correspondant aux sélecteurs de gauche. | *[highway=street_lamp] ⊈ area:closed2[amenity=parking][lit=yes]
trouve les zones amenity=parking qui ont lit=yes mais qui ne contiennent pas de lampe.
Ajoutez toujours |
| Ni un Sur-ensemble de ni égal à Concordances lorsqu'un objet correspond au(x) sélecteur(s) de droite et n'est pas contenu dans une zone correspondant aux sélecteurs de gauche. | area[landuse=residential] ⊉ *[building]
trouve les bâtiments qui ne se trouvent pas dans une zone landuse=residential. Notez que cet opérateur est susceptible de produire des faux positifs
lorsque vous avez des zones |
| croisement | area:closed:areaStyle ⧉ area:closed:areaStyle { throwOther: tr("Overlapping Areas"); }
prend en compte l'attribut |
Depuis la r6554, il est possible de préfixer "value" (c'est-à-dire l'expression après l'opérateur) avec un *
afin de la "déréférencer" c'est-à-dire la considérer comme une autre clé et obtenir sa valeur). Ainsi, [key1 = *key2]
ou [key1=*key2]
compare la valeur de key1
avec la valeur de key2
, et [key =~ */pattern/]
et [key =~ */pattern/]
considère la valeur de la clé pattern
comme une expression régulière et la compare avec la valeur de key
.
En outre, vous pouvez tester si un attribut est présent ou non :
Condition | Exemple |
---|---|
Présence d'attribut | way[highway] /* corresponds à n'importe quel chemin avec un attribut 'highway' (sensible à la casse) */ way["name:fr"] /* utilisez des guillemets si le nom de l'attribut comprend des caractères spéciaux (espaces blancs, deux-points, caractères unicode, etc.) */ |
Absence d'attribut | way[!highway] /* correspond à tout chemin qui n'a pas d'attribut 'highway' (sensible à la casse). */ way[!"name:fr"] /* utilisez des guillemets si le nom de l'attribut comprend des caractères spéciaux (espaces blancs, deux-points, caractères unicode, etc.) */ |
La présence d'un attribut par une expression régulière correspond (depuis r6547) | way[/^addr:/] /* correspond à toute clé `addr:*` */ |
Absence de balise par correspondance d'expression régulière | way[!/^addr:/] /* correspond à tout chemin qui n'a pas de balise 'addr:*'. */ |
Vous pouvez tester si la valeur d'une balise est une valeur de vérité logique. La valeur est évaluée à true, si elle est soit "oui", "vrai", ou "1". Toutes les autres valeurs sont interprétées comme étant fausses.
Condition | Exemple |
---|---|
Test de la valeur vraie | way[oneway?] /* correspond à n'importe quel chemin avec une valeur vraie dans l'attribut 'oneway'. */ |
Test pour une valeur faux (depuis r6513) | way[oneway?!] /* correspond à n'importe quel chemin avec une valeur faux dans l'attribut 'oneway' */ |
Sélecteur de territoire
Vous pouvez tester si un objet est situé à l'intérieur ou à l'extérieur d'un territoire spécifique. JOSM dispose d'une base de données interne pour cela. Le fichier des territoires peut être téléchargé et il faut l'ouvrir dans JOSM pour l'examiner (aperçu de la capture d'écran). Il contient les frontières de tous les pays du monde. Pour des raisons de performance, les frontières sont simplifiées. Elles peuvent être affinées pour des cas particuliers sur demande. Les territoires ont pour "attribut" leurs codes ISO_3166-1_alpha-2. Les États-Unis, le Canada, la Chine, l'Inde et l'Australie ont des frontières supplémentaires pour leurs subdivisions. Consultez les exemples suivants pour savoir comment utiliser les sélecteurs de territoires. Les sélecteurs de territoire sont moins utiles dans les modèles de coloriage et peuvent être très lourds en ressources. Cependant, ils sont beaucoup plus utiles pour les règles de validation basées sur mapcss. Pour sélectionner les territoires dont la circulation est à gauche ou à droite, il existe un moyen plus simple, voir les Pseudo Classes. Voir #10387 pour l'implémentation principale de cette fonctionnalité.
/* correspond à tout nœud situé … */ node[inside("FR")] /* … à l'intérieur de la France (y compris les territoires d'outre-mer) */ node[inside("FX")] /* … à l'intérieur de la France métropolitaine (c'est-à-dire seulement la partie continentale avec ses îles proches incluant la Corse) */ node[inside("EU")] /* … au sein de l'Union européenne */ node[inside("FR,DE")] /* … à l'intérieur de la France __OU__ à l'intérieur de l'Allemagne */ node[inside("US-FL")] /* … à l'intérieur de l'État américain de la Floride */ node[outside("FR")] /* … hors de France */ node[outside("FR,DE")] /* … hors de France __ET__ hors d'Allemagne */ node[inside("US")][outside("US-FL")] /* … à l'intérieur des États-Unis, à l'exception de l'État de Floride */
Sélecteur de lien
Dans un sélecteur d'enfant, vous pouvez formuler des conditions sur le lien entre un objet parent et un objet enfant.
Si le parent est une relation, vous pouvez formuler des conditions sur le role d'un objet membre dans cette relation.
relation[type=route] >[role="link"] way { /* correspond à tout chemin membre de la relation route avec le rôle 'link' */ color: blue; }
Opérateur | Description | Exemple |
---|---|---|
|
Correspondance exacte du nom du rôle. Le nom | relation >[role=residential] way relation >[role="My name"] way /* utiliser des guillemets si la valeur du rôle comprend des espaces ou d'autres caractères spéciaux */ |
Les opérateurs !=
, ^=
, $=
, *=
, et ~=
sont également pris en charge. Veuillez vous référer aux conditions des opérateurs de sélection.
Les noeuds dans les chemins et les membres dans les relations sont ordonnés. Vous pouvez formuler des conditions sur la position d'un nœud dans un chemin ou d'un objet membre dans une relation. Les nombres positifs comptent du premier au dernier élément, les nombres négatifs (depuis r8236) comptent du dernier au premier élément.
relation[type=route] >[index=1] way { /* correspond au premier chemin membre de la relation route */ color: blue; } way >[index=-1] node { /* correspond au dernier nœud d'un chemin */ symbol-stroke-color: green; } way!:closed >[index=1] node!:connection, way!:closed >[index=-1] node!:connection { /* correspond à tous les nœuds extrémité d'un chemin unique */ symbol-stroke-color: green; }
Sélecteur de zoom
Vous pouvez agrémenter un sélecteur de type d'un sélecteur de zoom. Le sélecteur de zoom interdit l'utilisation de plusieurs niveaux de zoom auxquels la règle MapCSS correspondante est appliquée.
Exemple | Description |
---|---|
way|z12 {...} | Au niveau 12 du zoom |
way|z13-15 {...} | De 13 à 15 |
way|z16- {...} | 16 et plus |
way|z-12 {...} | 12 et moins |
way {...} | n'importe quel niveau de zoom |
La définition précise des échelles pour chaque niveau de zoom peut changer à l'avenir. En règle générale, vous pouvez vous attendre à être approximativement au niveau de zoom n lorsque l'imagerie affiche des tuiles de carte glissante de niveau n.
Les pseudo-classes
Consultez la doc Java pour obtenir la liste actualisée des pseudo-classes prises en charge par l'implémentation MapCSS de JOSM.
Class | Description |
---|---|
:closed | vrai pour les chemins dont le premier nœud est le même que le dernier et pour toute relation multipolygon (complètement téléchargée) |
:closed2 | même chose que ci-dessus, mais celle-ci ignore si un multipolygone est téléchargé complètement (depuis r9099) |
:completely_downloaded | vrai pour une relation dont les membres sont tous téléchargés (depuis r9099) |
:new | tous les nouveaux objets |
:connection | vrai pour les nœuds utilisés par plus d'un chemin |
:unconnected | vrai pour les nœuds qui ne sont utilisés par aucun chemin (depuis r6687) |
:tagged | Ce que JOSM considère comme étiqueté, c'est-à-dire un objet qui a une clé d'attribut autre que les suivantes : source* , source_ref , note , comment , converted_by , created_by , watch* , fixme , FIXME , description , attribution (version r4008 ; dans cette liste * est global)
|
:righthandtraffic | vrai s'il y a une circulation à droite à l'emplacement actuel (depuis r7193) ; voir circulation à gauche ou à droite (en) pour obtenir une capture d'écran des zones |
:clockwise | Si le chemin est fermé et orienté dans le sens des aiguilles d'une montre, ou non fermé et que le 1er, le 2e et le dernier nœud sont dans l'ordre des aiguilles d'une montre. |
:anticlockwise | Si le chemin est fermé et orienté dans le sens inverse des aiguilles d'une montre, ou non fermé et que le 1er, le 2e et le dernier nœud sont dans l'ordre inverse des aiguilles d'une montre. |
:unclosed_multipolygon | vrai pour les relations multipolygonales non fermées entièrement chargées (depuis r8252) |
:open_end | pour sélectionner les nœuds d'extrémité des relations multipolygone non fermées avec relation:unclosed_multipolygon >:open_end node (depuis r8252)
|
:in-downloaded-area | vrai si un objet est dans la zone source et faux s'il est dans la zone hachurée (depuis r8495). |
:selected | vrai si un objet est sélectionné dans l'éditeur (depuis r9341). |
:modified | objets modifiés et nouveaux (depuis r7193). |
Vous pouvez aussi inverser les pseudo-classes. Par exemple, !:new
pour tous les anciens objets.
Identifiant de calque
Les calques peuvent être utilisés pour créer plusieurs modèles pour un même objet. Voici un exemple :
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; }
Cela dessine toutes les routes secondaires et tertiaires respectivement en jaune et en orange. Toutes les routes avec un tag d'accès autre que yes auront un modèle de ligne supplémentaire en dessous (object-z-index:-1.0;
) de la ligne principale. Si cette partie de la rue est un pont, elle sera également recouverte d'un bleu semi-transparent. La valeur de la largeur relative (width: +2;
) fait référence à la largeur sur le calque par défaut (2 ou 3 dans ce cas).
Le nom du calque peut être n'importe quel identifiant.
Si vous omettez le calque dans le sélecteur, c'est la même chose que d'utiliser ::default
.
Un exemple de plus :
node[amenity=parking] { icon-image: "presets/vehicle/parking/parking.svg"; /* affiche l'icône de parking (interne de josm) dans le calque par défaut */ text: ref; /* affiche la valeur de la clé ref sous forme de texte dans le calque par défaut */ } node[amenity=parking][fee=yes]::fee { icon-image: "presets/money/exchange.svg"; /* affiche l'icône (interne à josm) pour les bureaux de change dans le calque des tarifs */ icon-offset-x: 14; /* décaler l'icône */ icon-offset-y: -12; /* décaler l'icône */ text: charge; /* affiche la valeur de la clé du coût sous forme de texte dans le calque des tarifs. */ text-offset-x: 16; /* décaler le texte */ text-offset-y: 17; /* décaler le texte */ }
Le résultat ressemble à ceci
En outre, vous pouvez utiliser le calque * pour remplacer et initialiser tous les calques.
Il remplace toutes les sous-parties existantes, donc
way::A { a; } way::B { b; } way::* { c; }
est équivalent à
way::A { a; } way::B { b; } way::A { c; } way::B { c; }
Et il initialise de nouvelles sous-parties. En d'autres termes :
way::* { a; } way::A { b; }
est équivalent à
way::A {} way::* { a; } way::A { b; }
qui à son tour est identique à
way::A { a; } way::A { b; }
ou à
way::A { a; b; }
Grouper
Les règles ayant un bloc de déclaration commun peuvent être regroupées en une seule :
area[landuse=forest] { color: green; width: 2; } area[natural=wood] { color: green; width: 2; }
est identique à
area[landuse=forest], area[natural=wood] { color: green; width: 2; }
Classes
Vous pouvez attribuer des classes aux éléments correspondants et définir d'autres sélecteurs à l'aide de ces classes :
/* attribution des classes */ selector { set class; /* ou de manière équivalente */ set .class; } /* classes correspondantes */ way.class, node[foo=bar].class { /* ... */ }
Exemple d'attribution/de correspondance d'une classe nommée 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; }
Vous pouvez aussi utiliser la négation des classes. Par exemple, way !.path
pour tous les chemins qui ne font pas partie de la classe .path.
Traitement Conditionnel @supports
Les règles @supports sont utilisées pour sauter une section du modèle dans certaines conditions. Typiquement, vous souhaitez utiliser une fonctionnalité introduite dans une version plus récente de JOSM, mais vous souhaitez avoir un modèle de repli pour les utilisateurs de clients JOSM plus anciens. Cette fonctionnalité est apparue avec la r8087. Exemple :
@supports (min-josm-version: 9789) { way[highway] { width: 4; color: orange; } /* nouveaux trucs fantaisistes */ /* ... */ } @supports (max-josm-version: 9788) { way[highway] { width: 4; color: blue; } /* mode de repli, en utilisant des fonctions plus simples */ /* ... */ } @supports (icon-offset-x) { /* seulement si la propriété icon-offset-x property est supportée */ node[amenity] { icon-offset-x: 5; } }
La syntaxe correspond étroitement à la syntaxe css (en) officielle. Les conditions suivantes sont prises en charge :
Condition | Description |
---|---|
(<mapcsskey>) |
Vérifie si une certaine clé mapcss est supportée, par exemple |
(min-josm-version: <nombre>) |
N'inclue la section |
(max-josm-version: <nombre>) |
N'inclue la section |
(user-agent: <chaîne de caractères>) |
N'inclue la section |
Les conditions peuvent être combinées avec and
:
@supports (min-josm-version: 8087) and (max-josm-version: 8200) { /* uniquement pour les versions 8087 à 8200 de JOSM */ }
D'autres opérateurs logiques comme or
et not
peuvent également être utilisés. Les parenthèses sont nécessaires si vous voulez combiner différents opérateurs logiques :
@supports ((min-josm-version: 8087) and (max-josm-version: 8200)) or (user-agent: myEditor) { /* pour les versions 8087 à 8200 de JOSM et pour l'éditeur appelé "myEditor" */ }
Étant donné que les règles @supports ne sont prises en charge qu'à partir de la version r8087 de JOSM, vous devez également spécifier cette version minimale de JOSM dans le méta-sélecteur :
meta { min-josm-version: "8087"; /* Ce modèle utilise les règles @supports */ /* ... */ }
Modèles de rendu
Les paramètres des modèles sont utilisés pour fournir à l'utilisateur des paramètres pour personnaliser un modèle de coloriage. L'utilisateur peut les utiliser dans la fenêtre Coloriage. Les type
de paramètres suivants sont disponibles :
boolean
(voir r7450)double
(double) (depuis r15731, voir #10435)string
(chaîne de caractères) (depuis r15731, voir #10435)color
(couleur) (depuis r16843, voir #10435)
Paramètres de type boolean
Créez un paramètre de type boolean
(booléen) :
setting::highway_casing { type: boolean; label: tr("Dessiner l'habillage du chemin"); default: true; }
Utilisez un paramètre de type boolean
:
way[highway][setting("highway_casing")] { casing-width: 2; casing-color: white; }
Paramètres de type double
Créez un paramètre de type double
:
setting::place_font_size { type: double; label: tr("Définir la taille de la police du nom du lieu..."); default: 11; }
Utilisez un paramètre de type double
:
node.place, way.place, area.place { font-size: setting("place_font_size"); }
Paramètres de type string
Créez un paramètre de type string
(chaîne de caractères) :
setting::textdisplay { type: string; label: tr("clé utilisée pour l'affichage"); default: "name"; /* examples for usage: alt_name, old_name, addr:housename, ref, operator, ... */ }
Utilisez un paramètre de type string
:
way { text: tag(setting("textdisplay")); }
Paramètres de type color
Créez un paramètre de type color
. La couleur par défaut default
peut être n'importe quelle couleur, comme indiqué dans les explications sur les valeurs des Propriétés :
setting::colordisplay { type: color; label: tr("kclé utilisée pour l'affichage"); default: colorDisplayCustomPref#FF00FF; }
Utilisez un paramètre de type color
:
way { color: setting("colordisplay"); }
Paramètres de regroupement
Des paramètres similaires peuvent être regroupés en définissant des settings groups (groupes de paramètres) (depuis la r15289) :
settings::my_group { label: tr("mon merveilleux groupe"); icon: "my_beautiful_icon"; }
L'étiquette est obligatoire, l'icône est facultative.
Une fois qu'un groupe de paramètres est défini, il peut être référencé à partir de tous les paramètres qui lui appartiennent :
setting::hide_icons { type: boolean; label: tr("Masquer les icônes en cas de faible zoom"); default: true; group: "my_group"; }
Les groupes de paramètres sont affichés sous forme de sous-menus dans le menu des paramètres de style. Si au moins deux paramètres appartiennent à un groupe, un élément de menu spécial "Toggle all settings" (Permuter tous les paramètres) permet d'activer/désactiver rapidement tous les paramètres de ce groupe en une seule fois. Exemple d'utilisation : Modèle Cartographie avec IA (en).
Caractéristiques
Caractéristiques générales
Clé | Description | Format des Valeurs | Valeur par Défaut |
---|---|---|---|
z-index | Précise l'ordre dans lequel les objets sont dessinés : Les objets avec un z-index plus élevé sont dessinés au-dessus des objets avec un z-index plus faible | Nombre (peut être négatif) | 0 |
major-z-index | Similaire à z-index , mais il a une priorité plus élevée que z-index . Donc si un objet a un major-z-index plus élevé que l'autre, il est dessiné en haut. Si le major-z-index est le même, z-index décide. | Nombre (peut être négatif) | Dépend de l'élément du modèle : area (zone) : 1, casing (enveloppe) : 2, left-/right-casing (enveloppe gauche/droite) : 2.1, line-pattern (modèle de ligne) : 2.9, line (ligne) : 3, point : 4, default-point (point par défaut) : 4.1, line-text (texte de la ligne) : 4.9, point-text (texte du point) : 5 |
object-z-index | Similaire à z-index , mais avec une priorité inférieure. Contrôle l'ordre de coloriage pour les objets qui se chevauchent. Par exemple, pour deux chemins qui se croisent avec du texte : Utilisez z-index ou major-z-index si vous voulez d'abord dessiner les deux lignes et ensuite les deux légendes. Utilisez object-z-index si l'un des chemins doit être complètement au-dessus de l'autre. | Nombre (peut être négatif) | 0 |
modifier | Meilleur contrôle, si un symbole de ligne/nœud par défaut est généré par JOSM. Cela se produit lorsqu'il n'y a pas de style approprié (modifier=false ) trouvé sur une couche. | false ou true | false pour le calque par défaut et true pour tout autre calque
|
Notez que pour des raisons de performance, les valeurs des trois z-indexes sont limitées à des valeurs flottantes de 24 bits avec un maximum de 5 chiffres décimaux. Actuellement, le modèle de coloriage interne utilise des valeurs avec max. 2 chiffres avant et après le séparateur décimal. Pour éviter les problèmes, utilisez des valeurs z-indexes entre -99.999 et +99.999. (Voir aussi #14485)
Modèles d'icônes et de symboles
Clé | Description | Format des Valeurs | Valeur par Défaut |
---|---|---|---|
icon-image | L'icône à la position du nœud. Voir également Images. | Image | - |
icon-opacity | Opacité de l'image de l'icône | Opacité | 1.0 |
icon-width | Largeur de l'icône. Si une seule des propriétés icon-width et icon-height est donnée, l'image sera mise à l'échelle proportionnellement. Si ni la propriété icon-width ni la propriété icon-height ne sont définies, l'icône gardera sa taille originale. | Nombre | - |
icon-height | Hauteur de l'icône. (Voir icon-width ) | Nombre | - |
icon-offset-x | Décale l'icône dans le sens horizontal (valeurs positives vers la droite) (depuis r8085) | Nombre | 0 |
icon-offset-y | Décale l'icône dans la direction verticale (valeurs positives vers le bas) (depuis r8085) | Nombre | 0 |
icon-rotation | Fait tourner l'icône dans le sens des aiguilles d'une montre ou dans le sens inverse (valeur négative)(depuis r8260) | [rad] , [rad]rad , [deg]° , [deg]deg , [grad]grad , [turn]turn (definition angles (en)) ou une direction cardinale (par exemple northeast (nord-est) ou sw (sud-ouest)); Voir aussi les fonctions degree_to_radians et cardinal_to_radians . | - |
icon-position | Définit la position de l'icône pour les zones. Identique à text-position (depuis r11730). | center (centre), inside (à l'intérieur), line (ligne) | center
|
symbol-shape | Affiche un symbole à la position du nœud | square (carré), circle (cercle), triangle (triangle), pentagon (pentagone), hexagon (hexagone), heptagon (heptagone), octagon (octogone), nonagon (nonagone), decagon (décagone) | - |
symbol-size | Taille du symbole | Nombre, peut être relative ("+4") | 10 |
symbol-stroke-width | largeur du trait du contour | Width (contour) | 1.0 si symbol-stroke-color est défini
|
symbol-stroke-color | couleur de la ligne | (Couleur) | #FFC800 si symbol-stroke-width est défini
|
symbol-stroke-opacity | opacité de la ligne | Opacité | 1.0 |
symbol-fill-color | couleur de remplissage de la forme | Couleur | blue , à moins que symbol-stroke-width ou symbol-stroke-color ne soit défini
|
symbol-fill-opacity | opacité du remplissage | Opacité | 1.0 |
text-... , font-... | propriétés générales du texte & de la police | ||
text-anchor-horizontal | positionnement horizontal des étiquettes de texte | left , center , right | right
|
text-anchor-vertical | positionnement vertical des étiquettes de texte | above , top , center , bottom , below | bottom
|
text-rotation | Fait pivoter le texte dans le sens des aiguilles d'une montre ou dans le sens inverse (valeur négative)(depuis r16253) | [rad] , [rad]rad , [deg]° , [deg]deg , [grad]grad , [turn]turn (definition des angles (en)) ou une direction cardinale (par exemple northeast (nord-est) ou sw (sud-ouest)); Voir aussi les fonctions degree_to_radians et cardinal_to_radians . (Notez que la direction signifie l'orientation du bord supérieur du texte. Cela signifie qu'avec la direction par défaut du nord, le texte se dirige vers l'est (avec une langue allant de gauche à droite). Donc, si vous voulez le par exemple le faire se diriger vers le sud, vous devez définir l'est.) | - |
Ne vous fiez pas aux valeurs par défaut des propriétés symbol-...
(sauf pour opacity
). Elles sont destinées aux feuilles de style "rapides & grossières" et doivent être définies par une valeur explicite.
Modèles de lignes
Clé | Description | Format des Valeurs | Valeur par Défaut |
---|---|---|---|
width | Largeur de la ligne | Width (Largeur) | - |
color | Couleur de la ligne | Color (Couleur) | valeur de fill-color ou (si elle n'est pas définie) la couleur non marquée par défaut de JOSM (#808080 )
|
opacity | Transparence de la ligne. | Opacity (Opacité) | 1.0 |
dashes (tirets) | Un tableau de longueurs alternées marche/arrêt | liste de nombres, par exemple : > 15, 5 peut s'écrire comme une expression : > list(3, 4, 5, 6) ou le mot clé none pour désactiver les tirets | - |
dashes-offset | décaler le motif du tableau de tirets d'une certaine quantité | Nombre (>= 0) | 0 |
dashes-background-color | La couleur à utiliser entre les tirets (facultatif) | Color | - |
dashes-background-opacity | Valeur d'opacité pour le fond des tirets | Opacity | valeur de opacity
|
linecap | Forme au bout de ligne (voir ici) | none , round , square | none
|
linejoin | Forme aux angles de la ligne | round , miter , bevel | round
|
miterlimit | S'applique à linejoin: miter . Définit le dépassement maximum lorsque les segments de ligne se rencontrent avec un très petit angle | Nombre (>= 1.0) | 10.0 |
offset | Déplace la ligne vers la gauche ou la droite (en regardant dans la direction du chemin). Cela peut servir à dessiner plusieurs voies pour un seul chemin ou à marquer différemment les côtés gauche et droit d'un chemin. | Nombre (Une valeur positive déplace la ligne vers la gauche, une valeur négative vers la droite) | 0 |
text-position | défini comme line , si le texte doit être dessiné le long de la ligne | line , center | - |
text-... , font-... | propriétés générales du texte & de la police | ||
repeat-image | image répétée le long d'une ligne (depuis r5801) | Image | - |
repeat-image-width | Largeur de l'image (facultatif, voir icon-width ) (depuis r5811) | Nombre | - |
repeat-image-height | Hauteur de l'image (facultatif) (depuis r5811) | Nombre | - |
repeat-image-align | Alignement de l'image. Le bord supérieur Top, inférieur bottom ou la ligne centrale center (horizontale) de l'image sera le long de la ligne (depuis r5801) | top , center , bottom | center
|
repeat-image-offset | Décalage par rapport à la ligne (depuis r5801) | Number | 0 |
repeat-image-spacing | Espacement entre les images répétées (depuis r5801) | Number | 0 |
repeat-image-phase | Espacement initial en début de ligne (depuis r5812) | Number | 0 |
repeat-image-opacity | Opacité de l'image répétée (depuis r16700) | Number | 1.0 |
Toutes ces propriétés (sauf text-...
et font-...
) existent aussi avec le préfixe casing-
Le cadre est un deuxième élément de ligne indépendant, qui est dessiné sous la ligne normale et peut être utilisé pour dessiner un cadre fin autour de la ligne dans une autre couleur.
Clé | Description | Format des Valeurs | Valeur par Défaut |
---|---|---|---|
casing-width | Largeur de la bordure de part et d'autre de la ligne principale. Dans JOSM < 5214 : largeur totale du cadre | Width (inverse de width si la largeur relative est spécifiée) | - |
casing-color | Couleur du cadre | Couleur | valeur de fill-color ou (si elle n'est pas définie) la couleur non marquée par défaut de JOSM (#808080 )
|
casing-opacity | Transparence du cadre. | Opacité | 1.0 |
casing- ... | ... | ... | ... |
Comme pour casing-
, il existe aussi le préfixe left-casing-
et right-casing-
Il dessine des lignes supplémentaires à gauche et à droite de la ligne principale.
Modèles des zones
Clé | Description | Format des Valeurs | Valeur par Défaut |
---|---|---|---|
fill-color | Couleur avec laquelle remplir la zone. Jusqu'à 11700, la composante alpha était fixée à 50 pour créer un effet de transparence. | Couleur | - |
fill-image | Motif de l'image | Image | - |
fill-extent | Définissez cette propriété pour dessiner uniquement le contour de la zone. Le nombre indique la distance à parcourir depuis le bord de la zone vers le centre. (Si elle n'est pas définie, la zone sera remplie complètement) (depuis r9008) | Nombre | - |
fill-extent-threshold | Définissez cette propriété, pour dessiner la zone entière lorsque le pourcentage de couverture donné est atteint. Il peut être supérieur à 100 %, car la zone couverte est estimée comme perimeter * extent (étendue du périmètre). | Nombre | - |
fill-opacity | Degré de transparence du remplissage ; s'applique à la fois à la couleur et à l'image. | Opacité | 0.2 (depuis r11700, 1.0 avant cela) (peut être modifié avec les préférences mappaint.fillalpha et mappaint.fill-image-alpha )
|
text-position | Définissez-le à center (centre), si le texte doit être dessiné au centre de la zone. Définissez-le à inside (intérieur) pour placer le texte complètement à l'intérieur de la zone. (depuis la r11722) | line , center , inside | - |
text-... , font-... | propriétés générales du texte & de la police |
Propriétés requises pour créer un modèle de zone : fill-color
ou fill-image
Propriétés du Texte & de la Police
Clé | Description | Format de la Valeur | Valeur par Défaut |
---|---|---|---|
| Comment trouver le texte de l'étiquette. Aucune étiquette n'est affichée, sauf si cette instruction est présente. |
String : Chaîne de caractères
Expressions
| - |
text-color | la couleur du texte | Couleur | white (blanc) pour les lignes et les nœuds, #c0c0c0 pour les zones (préférences des couleurs de "text " et de "areatext " de JOSM)
|
text-opacity | transparence du texte | Opacité | 1.0 |
text-offset-x | décaler le texte horizontalement, (non supporté pour le texte le long de la ligne) | Nombre | 0 |
text-offset-y (peut aussi s'écrire text-offset ) | déplace le texte verticalement, les valeurs positives déplacent le texte vers le haut. | Nombre | 0 |
text-halo-radius | taille de la bordure de l'arrière-plan du texte (pour rendre le texte visible sur un fond de couleur similaire) | Nombre | - |
text-halo-color | couleur du halo du texte | Couleur | complément de la couleur du texte |
text-halo-opacity | transparence pour le halo du texte. | Opacité | 1.0 |
font-family | famille de police | String Chaîne de caractères | "Droid Sans" ("mappaint.font" préférence JOSM) |
font-size | taille de la police | Nombre | 8 ("mappaint.fontsize" préférence JOSM) |
font-weight | en gras ou non | bold , normal | normal
|
font-style | en italique ou non | italic , normal | normal
|
Propriétés définies par l'utilisateur
- Dans les Modèles de rendu de cartes vous pouvez définir n'importe quelle propriété personnalisée, par ex :
crc: CRC32_checksum(tag(name))/429496.7296;
- Dans les Règles de Validation ils doivent être préfixés par un
-
, par ex :-osmoseItemClassLevel: "1210/1/1";
Explications sur les valeurs des propriétés
Width (Largeur)
- 14.0 (un nombre positif quelconque)
default
(utilise la largeur de ligne par défaut de JOSM, qui est de 2, mais qui peut être modifiée)thinnest
(le plus fin : dessine la ligne la plus fine possible))- +3 ((avec le signe plus devant) ajoute le nombre à la largeur sur le calque par défaut. Cela ne s'applique qu'aux modèles qui ne se trouvent pas sur le calque par défaut, par exemple les surbrillances. Une autre façon d'écrire ceci serait
prop("width","default")+3
. Pourcasing-width
, cela fait référence à la valeurwidth
sur le même calque.
Image
Voir Images.
Color (Couleur)
- la couleur est nommée comme dans cette liste (en)
- style html :
#RRGGBB
,#RGB
,#RRGGBBAA
rgb(/*r*/, /*g*/, /*b*/)
- valeur rgb avec des arguments de 0.0 à 1.0rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)
- valeur rgb avec alphahsb_color(/*hue*/, /*saturation*/, /*brightness*/)
- couleur de l'espace couleur HSB
Opacity (Opacité)
- de 0.0 (transparent) à 1.0 (opaque)
String (Chaîne de caractères)
- toute séquence de caractères, entre guillemets, par exemple
"images/fill.png"
. Si la chaîne est un identifiant, les guillemets sont facultatifs. (Les guillemets et le signe backslash peuvent être échappés.)
Number (Nombre)
- nombre entier ou à virgule flottante (sous forme simple, par exemple 0.3). En général, il peut être négatif, mais la plupart des propriétés ne prennent pas en charge les nombres négatifs.
- il a une signification particulière si vous mettez un signe "+" devant (largeur relative)
Expressions d'évaluation
Voir la doc de fonctions Java pour la liste actualisée des fonctions prises en charge par l'implémentation MapCSS de JOSM.
- +, -, *, /
- les opérations arithmétiques
- ||, &&, !
- les opérations booléennes
- <, >, <=, >=, ==, !=
- les opérateurs de comparaison
- asin, atan, atan2, ceil, cos, cosh, exp, floor, log, max, min, mod (since r17759), random, round, signum, sin, sinh, sqrt, tan, tanh
- la signification habituelle, details (en)
- cond(b, fst, snd)
- b ? fst : snd
- si (b) alors fst sinon snd
- list(a, b, ...)
-
créer une liste de valeurs, par exemple pour la propriété
dashes
- get(lst, n)
- récupérer le nième élément de la liste lst (le décompte commence à 0) (depuis r5699)
- split(sep, str)
- divise la chaîne str aux occurrences de la chaîne séparatrice sep, renvoie une liste (depuis r5699)
- prop(p_name)
-
valeur de la propriété p_name du calque courant, par exemple prop(
"width"
) - prop(p_name, layer_name)
- propriété du calque layer_name
- is_prop_set(p_name)
- vrai, si la propriété p_name est définie pour le calque courant
- is_prop_set(p_name, layer_name)
- vrai, si la propriété p_name est définie pour le calque layer_name
- tag(key_name)
- récupérer la valeur de la clé key_name de l'objet en question
- parent_tag(key_name)
- récupérer la valeur de la clé key_name du parent de l'objet
- parent_tags(key_name)
- renvoie toutes les valeurs des parents pour la clé key_name sous forme de liste ordonnée par un ordre naturel (depuis r8775)
- has_tag_key(key_name)
- vrai, si l'objet a un attribut avec la clé donnée
- rgb(r, g, b)
- créer une valeur de couleur (arguments de 0.0 à 1.0)
- hsb_color(h, s, b)
- créer une couleur à partir de la teinte, de la saturation et de la luminosité (arguments de 0.0 à 1.0) (depuis r6899)
- red(clr), green(clr), blue(clr)
- obtenir la valeur des canaux de couleur dans le modèle de couleur rgb
- alpha(clr)
- obtenir la valeur alpha de la couleur donnée (depuis r6749)
- length(str)
- longueur d'une chaîne de caractères
- count(lst)
- longueur d'une liste, c'est-à-dire qu'elle compte le nombre de ses éléments (depuis r7162)
- length(lst)
- longueur d'une liste (depuis r5699) – dépréciée depuis r7162
- any(obj1, obj2, ...)
- renvoie le premier objet qui n'est pas nul (anciennement coalescence, (depuis r7164))
- concat(str1, str2, ...)
- assembler les chaînes de caractères en une seule
- join(sep, str1, str2, ...)
- joindre des chaînes de caractères, avec sep comme séparateur (depuis r6737)
- join_list(sep, list_name)
- joint les éléments de la liste list_name à une chaîne de caractères séparée par le séparateur sep (depuis r8775)
- upper(str)
- convertit la chaîne de caractères en majuscules (depuis r11756)
- lower(str)
- convertit la chaîne de caractères en minuscules (depuis r11756)
- title(str)
-
convertit la chaîne de caractères en casse-titre (depuis r17613] (
"i am FINE"
→"I Am Fine"
) - trim(str)
- supprime les espaces en tête et en queue de chaîne de caractères (depuis r11756)
- trim_list(list_name)
- supprime les espaces en tête et en queue d'une liste de chaînes de caractères, supprime ensuite les entrées qui sont vides (depuis r15591)
- JOSM_search("...")
- vrai, si la recherche JOSM s'applique à l'objet.
- tr(str, arg0, arg1, ...)
- traduire de l'anglais vers la langue courante (uniquement pour les chaînes de l'interface utilisateur de JOSM) (depuis r6506)
- regexp_test(regexp, string)
- test si la string correspond au modèle regexp (depuis r5699)
- regexp_test(regexp, string, flags)
- tester si string correspond au schéma regexp; flags est une chaîne qui peut contenir "i" (insensible à la casse), "m" (multiligne) et "s" ("dot all" tout point) (depuis r5699)
- regexp_match(regexp, string)
- Tente de faire correspondre string au schéma regexp. Renvoie une liste de groupes de capture en cas de succès. Le premier élément (index 0) est la correspondance complète (c'est-à-dire string). Les éléments suivants correspondent aux parties entre crochets de l'expression régulière. (depuis r5701)
- regexp_match(regexp, string, flags)
- Tente de faire correspondre string au schéma regexp. Renvoie une liste de groupes de capture en cas de succès. Le premier élément (index 0) est la correspondance complète (c'est-à-dire string). Les éléments suivants correspondent aux parties entre crochets de l'expression régulière. Flags est une chaîne qui peut contenir "i" (insensible à la casse), "m" (multiligne) et "s" ("dot all" tout point) (depuis r5701)
- substring(str, idx)
- retourne la sous-chaîne de str, à partir de l'index idx (0-indexed indexation 0) (depuis r6534)
- substring(str, start, end)
- retourne la sous-chaîne de str, à partir de l'index start (inclus) jusqu'à end (exclus) (0-indexed) (depuis r6534)
- replace(string, old, new)
- Remplace toute occurrence de la sous-chaîne old dans la chaîne string par le texte new
- osm_id()
- renvoie l'identifiant OSM de l'objet actuel (depuis r5699)
- osm_user_name()
- renvoie le nom de l'utilisateur OSM qui a touché l'objet en question en dernier. (depuis r15246)
- osm_user_id()
- renvoie l'identifiant de l'utilisateur OSM qui a touché l'objet en question en dernier (depuis r15246)
- osm_version()
- renvoie le numéro de version OSM de l'objet courant (depuis r15246)
- osm_changeset_id()
- renvoie l'identifiant du groupe de modifications dans lequel l'objet actuel a été envoyé en dernier (depuis r15246)
- osm_timestamp()
- renvoie l'heure de la dernière modification de l'objet courant, sous forme d'horodatage (depuis r15246)
- parent_osm_id()
- renvoie l'identifiant OSM du parent de l'objet (correspondant au sélecteur enfant) (depuis r13094)
- URL_encode(str)
- encodage-pourcent une chaîne de caractères. Peut être utile pour les URL de données (depuis r6805)
- URL_decode(str)
- encodage-pourcent une chaîne de caractères. (depuis r11756)
- XML_encode(str)
-
caractères spéciaux d'échappement dans le xml. Par exemple
<
devient<
, autres caractères speciaux :>
,"
,'
,&
,\n
,\t
et\r
(depuis r6809) - CRC32_checksum(str)
- calcule la somme de contrôle CRC32 d'une chaîne de caractères (le résultat est un entier de 0 à 232-1) (depuis r6908)
- is_right_hand_traffic()
- Vérifie si la circulation se fait à gauche ou à droite à l'endroit où vous vous trouvez. (depuis r7193)
- number_of_tags()
- renvoie le nombre d'attributs pour l'objet OSM actuel (depuis r7237)
- print(o)
-
imprime une représentation en chaîne de
o
sur la ligne de commande (pour le débogage) (depuis r7237) - println(o)
-
imprime une représentation en chaîne de
o
sur la ligne de commande, suivie d'une nouvelle ligne (pour le débogage) (depuis r7237) - JOSM_pref(key, default)
-
Tirez parti des paramètres avancés de JOSM. Cette manière vous permet d'offrir certaines options à l'utilisateur et de rendre le modèle personnalisable.
(Elle fonctionne avec les chaînes de caractères, les nombres, les couleurs et les valeurs booléennes. (Cette fonction existe depuis la version r3856, mais avec quelques interdictions.JOSM_pref
renvoie toujours une chaîne, mais dans les versions r7237 et antérieures, la conversion automatique de la chaîne en booléen et en couleur ne fonctionnait pas. Vous pouvez utiliser les solutions de contournement suivantes pour les valeurs booléennes et les couleurs dans les versions r7237 et antérieures :cond(JOSM_pref("myprefkey", "true")="true", "X", "O")
ethtml2color(JOSM_pref("mycolor", "#FF345611"))
. Ces conversions explicites ne devraient plus être nécessaires à partir de la version r7238. La conversion automatique en nombre fonctionne dans toutes les versions. En outre, dans la version r16590, peut être utilisé pour définir les propriétés de couleur. Ainsi* { set_color: JOSM_pref("pref", #000000); }
créera maintenant une propriété de couleur.) - setting()
- pour utiliser un paramètre de modèle (depuis r7450)
- degree_to_radians()
- renvoie en radians, une direction donnée en degrés (depuis r8260)
- cardinal_to_radians()
- renvoie une direction cardinale en radians (depuis r8260)
- waylength()
- renvoie la longueur du chemin en mètres (depuis r8253)
- areasize()
- renvoie la surface d'un chemin fermé en mètres carrés. (depuis r8253)
- at(lat,lon)
-
retourne vrai si le centroïde de l'objet se trouve aux coordonnées lat/lon données, par exemple pour vérifier les nœuds à "null island"
node[at(0.0,0.0)]
(depuis r12514) - is_similar(str1, str2)
-
renvoie vrai si les deux chaînes de caractères sont similaires, mais pas identiques, c'est-à-dire si elles ont une distance de Levenshtein de 1 ou 2. Exemple :
chemin[autoroute][nom][is_similar(tag(name), "Main Street")]
:way[highway][name][is_similar(tag(name), "Main Street")]
vérifie les rues avec une éventuelle faute de frappe dans le nom (par exemple Main Streeg). (depuis r14371) - gpx_distance()
- renvoie la distance la plus faible entre l'objet OSM et un point GPX (depuis r14802)
- count_roles()
- renvoie le nombre de primitives dans une relation avec les rôles spécifiés (depuis r15275]
- sort(str1, str2, str3, ...)
- trie un tableau de chaînes de caractères (depuis r15279)
- sort_list()
- trie une liste de chaînes de caractères (depuis r15279)
- tag_regex(regex)
- renvoie une liste de valeurs qui correspondent à regex (expression rationnelle) (depuis r15317)
- to_boolean(str)
- renvoie l'argument chaîne de caractères comme un booléen (depuis r16110)
- to_byte(str)
- renvoie l'argument chaîne de caractères sous forme d'octet (depuis r16110)
- to_short(str)
- retourne l'argument chaîne de caractères comme un short (entier court) (depuis r16110)
- to_int(str)
- retourne l'argument chaîne de caractères comme un int (entier) (depuis r16110)
- to_long(str)
- retourne l'argument chaîne de caractères comme un long (entier long ) (depuis r16110)
- to_float(str)
- renvoie l'argument de la chaîne de caractères sous la forme d'un float (nombre a virgule flottante) (depuis r16110)
- to_double(str)
- retourne l'argument chaîne de caractères comme un double (depuis r16110)
- uniq(str1, str2, str3, ...)
- renvoie une liste de chaînes de caractères qui n'ont que des valeurs uniques à partir d'un tableau de chaînes de caractères (depuis r15323)
- uniq_list()
- renvoie une liste de chaînes de caractères qui n'ont que des valeurs uniques à partir d'une liste de chaînes de caractères (depuis r15353)
Exemples
- symbole en forme de cercle pour le numéro de maison dont la taille dépend du nombre de chiffres
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; }
- inversion des couleurs
*::* { 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)))); }
- trucs aléatoires
way { width: eval(random() * 20); color: eval(rgb(random(), random(), random())); }
- Exemple de correspondance regexp : remplacer "nameXXXsubname" par "name::subname"
*[name=~/.+XXX.+/] { _match: regexp_match("(.+?)XXX(.+)", tag("name")); text: concat(get(prop("_match"),1), "::", get(prop("_match"),2)); }
- colorier différemment les bâtiments en fonction de la rue dans les atributs d'adresse
area[building][addr:street] { fill-color: hsb_color(CRC32_checksum(tag("addr:street"))/4294967296.0, 0.9, 0.7); fill-opacity: 0.8; }
Remarques sur la compatibilité
MapCSS 0.2
Grammaire
way[oneway=yes]
ne fait pas de magie, vous pouvez utiliserway[oneway?]
instead- pas de
@import
- JOSM n'exige pas que
eval(...)
soit entouré d'expressions, mais pour des raisons de compatibilité avec d'autres implémentations de MapCSS, vous devriez l'écrire.
Propriétés
Pour le moment, JOSM ne prend pas en charge les propriétés suivantes :
- line:
-
image
- label:
-
font-variant, text-decoration, text-transform, max-width
- shield:
- non pris en charge
Halcyon (Potlatch 2)
- L'étiquette de texte est placée au centre de l'icône. Pour la compatibilité avec Halcyon, mettez
au début de votre feuille de style.
node { text-anchor-vertical: center; text-anchor-horizontal: center; }
- le standard de z-index dans Halcyon est 5, mais 0 dans JOSM
image: circle;
correspond àsymbol-shape: circle;
Kothic
- Kothic supporte l'eval, qui diffère probablement de l'eval de JOSM.
- Kothic connaît les unités, alors que JOSM calcule toujours en pixel.
- Les fonctions d'extrusion ne sont pas disponibles dans JOSM.
Ceyx
- semble avoir
[tunnel=1]
au lieu de[tunnel=yes]
(Halcyon) ou[tunnel?]
(JOSM)
Requêtes Media (obsolètes)
Note : Les requêtes media sont dépréciées. Vous devez utiliser les règles @supports à la place (voir ci-dessus). |
Les requêtes media sont utilisées pour sauter une section du modèle dans certaines conditions. En général, vous souhaitez utiliser une fonctionnalité introduite dans une version plus récente de JOSM, mais vous souhaitez disposer d'un style de repli pour les utilisateurs de clients JOSM plus anciens. Cette fonctionnalité est apparue avec la r6970. Exemple :
@media (min-josm-version: 9789) { way[highway] { width: 4; color: orange; } /* nouveaux trucs fantaisistes */ /* ... */ } @media (max-josm-version: 9788) { way[highway] { width: 4; color: blue; } /* mode de repli, en utilisant des fonctions plus simples */ /* ... */ }
La syntaxe correspond étroitement à la syntaxe css (en) officielle. Les conditions suivantes sont prises en charge :
Condition Media | Description |
---|---|
(min-josm-version: <nombre>) |
N'inclure la section |
(max-josm-version: <nombre>) |
N'inclure la section |
(user-agent: <chaîne de caractères>) |
N'incluez la section |
Les conditions peuvent être combinées avec and
:
@media (min-josm-version: 6970) and (max-josm-version: 7014) { /* uniquement pour les versions 6970 à 7014 de JOSM */ }
Plusieurs conditions combinées peuvent être enchaînées avec une virgule (ou logique) :
@media (min-josm-version: 6970) and (max-josm-version: 7014), (user-agent: myEditor) { /* pour les versions 6970 à 7014 de JOSM et pour l'éditeur appelé "myEditor" */ }
Les requêtes media n'étant prises en charge qu'à partir de la version 6970 de JOSM, vous devez également indiquer cette version minimale de JOSM dans le sélecteur meta :
meta { min-josm-version: "6970"; /* Ce modèle utilise les requêtes media */ /* ... */ }