Style de rendu de carte - .render.xml
Si vous souhaitez modifier le style de rendu par défaut, vous devez consulter la définition sur GitHub. Vous trouverez toutes sortes de styles à ce lien. Si vous souhaitez créer votre propre style, vous pouvez trouver l'exemple le plus simple.
Si vous dĂ©cidez de crĂ©er votre propre style de rendu personnalisĂ©, vous devrez peut-ĂȘtre crĂ©er vos propres cartes pour ajouter l'affichage de fonctionnalitĂ©s personnalisĂ©es.
Sections de style de carteâ
Le fichier de style de carte se compose de plusieurs sections.
Section | Description |
---|---|
En-tĂȘte | Se compose de name (nom du style), defaultColor (couleur de carte par dĂ©faut pouvant ĂȘtre remplacĂ©e par l'attribut defaultColor) et depends (hĂ©rite de toutes les propriĂ©tĂ©s du style parent). |
ParamÚtres | Définis comme <renderingProperty> ont attr qui sera utilisé dans le style comme nom de paramÚtre et name , description seront affichés à l'utilisateur. |
Attributs et constantes | DĂ©finis comme <renderingAttribute> et comme <renderingConstant> permettent de rĂ©utiliser les mĂȘmes blocs de styles de rendu pour diffĂ©rents objets cartographiques |
Section Ordre | DĂ©finie comme un bloc <order> . Chaque objet cartographique est recherchĂ© dans la section d'ordre pour dĂ©terminer s'il sera rendu comme point, ligne ou polygone (objectType ) et dans quel order il doit ĂȘtre affichĂ©. ParamĂštres de recherche (entrĂ©e) : tag , value , zoom , point (vrai ou faux), area (type osm), cycle (le point de dĂ©part et d'arrivĂ©e sont les mĂȘmes). RĂ©sultat de la recherche (sortie) : objectType (point = 1, ligne = 2, polygone = 3), order (0-255). L'ordre de rendu est dĂ©fini comme suit : polygones, ombres de lignes, lignes, points. Si l'order est le mĂȘme pour les polygones, alors les polygones sont affichĂ©s du plus grand au plus petit. Remarque : les polygones ne doivent pas se chevaucher partiellement, sinon le comportement n'est pas dĂ©fini. |
Section Texte | DĂ©finie comme un bloc <text> . Chaque objet cartographique affichĂ© est recherchĂ© pour dĂ©terminer s'il doit afficher le texte et comment il doit ĂȘtre affichĂ©. ParamĂštres de recherche (entrĂ©e) : tag , value , zoom , nameTag (chaque balise de texte est vĂ©rifiĂ©e). RĂ©sultat de la recherche (sortie) : textOnPath , textMinDistance (marge entre les mĂȘmes textes, c'est-Ă -dire les noms de rues, les rĂ©fĂ©rences), textSize , textColor , textHaloRadius , textOrder , textDy , textBold , nameTag2 (nom supplĂ©mentaire entre parenthĂšses si prĂ©sent), textShield (arriĂšre-plan autour du texte), icon (icĂŽne au lieu de texte), textItalic , textWrapWidth , intersectionMargin (marge supplĂ©mentaire pour ne pas chevaucher le texte). |
Section Point | DĂ©finie comme un bloc <point> . Chaque objet cartographique ponctuel affichĂ© (dĂ©fini dans la section order ) est recherchĂ© dans cette section pour dĂ©terminer comment il doit ĂȘtre affichĂ©. ParamĂštres de recherche (entrĂ©e) : tag , value , zoom , e . RĂ©sultat de la recherche (sortie) : shield (bouclier d'icĂŽne), icon , iconVisibleSize (espace supplĂ©mentaire pour ne pas encombrer les icĂŽnes), iconOrder , intersectionSizeFactor . |
Section Polygone | DĂ©finie comme un bloc <polygon> . Chaque objet cartographique polygonal affichĂ© (dĂ©fini dans la section order ) est recherchĂ© dans cette section pour dĂ©terminer comment il doit ĂȘtre affichĂ©. ParamĂštres de recherche (entrĂ©e) : tag , value , zoom . RĂ©sultat de la recherche (sortie) : color (couleur pour remplir le polygone), shader (remplir le polygone avec la mĂȘme icĂŽne), color_2, color_N (couleur du contour autour du polygone), strokeWidth_2 (largeur du contour), pathEffect_2 , cap_2 . |
Section Ligne | DĂ©finie comme un bloc <line> . Chaque objet cartographique linĂ©aire affichĂ© (dĂ©fini dans la section order ) est recherchĂ© dans cette section pour dĂ©terminer comment il doit ĂȘtre affichĂ©. 1 objet linĂ©aire peut ĂȘtre rendu comme plusieurs lignes combinĂ©es jusqu'Ă -2 couches en dessous et jusqu'Ă 7 couches au-dessus. ParamĂštres de recherche (entrĂ©e) : tag , value , zoom , nameTag (chaque balise de texte est vĂ©rifiĂ©e). RĂ©sultat de la recherche (sortie) : color, color_* (couleur du contour autour du polygone), strokeWidth, strokeWidth_* (largeur du contour), pathEffect, pathEffect_* (effet de chemin), cap, cap_* (BUTT, ROUND, SQUARE), pathIcon , pathIconStep , shadowRadius (ombre autour de la ligne). |
SĂ©lecteurs de fonctionnalitĂ©s de carteâ
Pour dĂ©terminer quels attributs doivent ĂȘtre rĂ©cupĂ©rĂ©s du style de rendu, la procĂ©dure de recherche suivante est effectuĂ©e :
- Trouver le
<case>
le plus interne qui correspond aux paramÚtres d'entrée de recherchetag/value/zoom
, c'est-Ă -dire pourhighway=primary
-<case tag="highway" value="primary">
sera trouvé. - Tous les éléments internes de
<case>
sont appliqués séquentiellement en profondeur et les paramÚtres de sortie sont collectés <case><apply output="1"/><apply_if zoom="15" output="2"> <case>
- la sortie sera 2 sizoom=15
et la sortie sera 1 sinon.- Vérifier si
<case>
fait partie d'un<switch>
et si c'est le cas, tous lesapply
etapply_if
de ce switch seront également évalués.
RÚgles d'évaluation :
- Dans chaque 'case',
apply_if
,switch
,apply
, les attributs d'entrĂ©e sont vĂ©rifiĂ©s pour correspondre (Ă©valuer Ă vrai), sinon la section est ignorĂ©e et les attributs de sortie ne sont pas collectĂ©s. - Toutes les rĂšgles sont Ă©valuĂ©es sĂ©quentiellement et les paramĂštres de sortie peuvent ĂȘtre remplacĂ©s par les rĂšgles suivantes.
additional=?
est un attribut d'entrée spécial qui vérifie les balises supplémentaires de l'objet.- Les paramÚtres de style de carte sont également des paramÚtres de recherche d'entrée, en plus de
tag/value/zoom
.- Exemple :
<apply_if nightMode="false" streetLightingNight="false" shield="street_lamp_lit_no_shield"/>
. ParamÚtres d'entrée : nightMode, streetLightingNight ; paramÚtres de sortie - shield.
- Exemple :
Attributs (spĂ©ciaux) et Constantesâ
Les constantes de rendu et les attributs de rendu sont interchangeables et peuvent ĂȘtre utilisĂ©s pour simplifier le style de rendu et Ă©viter de copier/coller des valeurs ou des blocs de code. Si un attribut comme color
est une valeur unique, il est préférable d'utiliser une constante de rendu car cela accélÚre considérablement les performances du style de rendu.
Les constantes de rendu ne peuvent ĂȘtre utilisĂ©es qu'avec une seule valeur donnĂ©e : <renderingConstant name="motorwayShadowRadius" value="1.6"/>
et plus tard dans les sélecteurs de fonctionnalités comme <apply_if shadowRadius="$motorwayShadowRadius"/>
.
Les attributs de rendu peuvent avoir une structure intégrée avec des sélecteurs supplémentaires et produire l'un des attributs suivants (attrColorValue
, attrBoolValue
, attrFloatValue
, attrIntValue
, attrStringValue
). Exemple :
<renderingAttribute name="motorroadShadowColor">
<case attrColorValue="#5f5fff"/>
</renderingAttribute>
.....
<case showAccess="true" additional="motorroad=yes" attrColorValue="$motorroadShadowColor"/>
Attributs spĂ©ciauxâ
Les attributs spéciaux sont <renderingAttribute >
qui ne sont pas utilisés par les sélecteurs mais utilisés directement par le code pour interroger une fonctionnalité spécifique qui est dessinée dans l'application comme un itinéraire de navigation, une rÚgle, une trace gpx, etc.
Attribut spécial | Description |
---|---|
measureDistanceLine | Rendu de ligne pour la fonctionnalité Planifier un itinéraire |
markerGuideline , markerPlanRouteline | Rendu des lignes vers les marqueurs |
route | Rendu d'un itinéraire de navigation |
gpx | Rendu d'une trace GPX |
publicTransportLine | Rendu d'un itinéraire de navigation de transport en commun |
walkingRouteLine | Rendu d'une navigation de transport en commun : itinĂ©raire piĂ©ton entre les arrĂȘts |
rulerLineFont , rulerLine , rulerCircleAlt , rulerCircle | Comment rendre le widget RĂšgle de rayon et mesurer la distance par tap |
defaultColor | Couleur par défaut pour remplir la carte (change le mode nuit/jour) |
shadowRendering | Interne comment rendre l'ombre avec Skia |
routeInfo_* | Exemple : routeInfo_surface , routeInfo_roadClass produisent des classes de routes à afficher dans la légende de l'itinéraire. |
polygonMinSizeToDisplay | Internes comment rendre les petites lignes et les petits polygones |
roadDensityZoomTile | Internes comment rendre les petites lignes et les petits polygones |
roadsDensityLimitPerTile | Internes comment rendre les petites lignes et les petits polygones |
defaultSymbolPathSpacing | Internes comment rendre les petites lignes et les petits polygones |
defaultBlockPathSpacing | Internes comment rendre les petites lignes et les petits polygones |
globalPathPadding | Internes comment rendre les petites lignes et les petits polygones |
debugTextDisplayBBox | Attributs pour déboguer le rendu et le positionnement du texte |
debugTextDisplayShieldBBox | Attributs pour déboguer le rendu et le positionnement du texte |
debugTextDoNotFindIntersections | Attributs pour déboguer le rendu et le positionnement du texte |
debugTextDoNotFindIntersectionsSameName | Attributs pour déboguer le rendu et le positionnement du texte |
debugTextDisplayShortRoadNames | Attributs pour déboguer le rendu et le positionnement du texte |
ParamĂštres de style de carteâ
Les paramÚtres de style de carte permettent de combiner plusieurs styles de rendu dans une seule d éfinition de fichier, c'est-à -dire qu'il n'est pas nécessaire d'avoir un fichier 'my_custom_style_night_mode.render.xml' séparé. Il est possible de définir un paramÚtre comme night_mode
(activé par défaut) et de personnaliser certaines rÚgles (comme les couleurs) à l'aide de ce paramÚtre. Plus tard, dans l'interface utilisateur, il est possible de changer facilement ce paramÚtre et d'avoir un style de carte différent dans OsmAnd.
Voici une définition du paramÚtre baseAppMode
. possibleValues
sont les valeurs qui seront affichées dans l'interface utilisateur d'OsmAnd, category
aide à déterminer à quelle catégorie d'interface utilisateur cette propriété appartient.
<renderingProperty attr="baseAppMode" name="Mode de rendu par défaut" description="Optimisation de la carte pour le profil utilisateur respectif basé sur le profil de base (parent)"
type="string" possibleValues="default, car, bicycle, pedestrian, public_transport, boat, ski"/>
Plus tard, dans le style de sĂ©lection, vous pouvez spĂ©cifier quand ce sĂ©lecteur peut ĂȘtre appliquĂ©, c'est-Ă -dire pour quel mode d'application spĂ©cifiĂ© par l'utilisateur.
<renderingAttribute name="roadsDensityLimitPerTile">
<!-- Nombre de routes Ă afficher par tuile -->
<case moreDetailed="true" attrIntValue="55"/>
<case baseAppMode="pedestrian" attrIntValue="40"/>
<case baseAppMode="bicycle" attrIntValue="40"/>
<case attrIntValue="60"/>
</renderingAttribute>
Donc, si l'utilisateur sélectionne moreDetailed=true
, la valeur de sortie pour la densité sera 55
, et si baseAppMode=pedestrian
(un autre paramĂštre), elle sera 40
, sinon 60.