Aller au contenu principal

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, donc si vous souhaitez créer votre propre style, vous pouvez trouver l'exemple le plus simple.

Si vous dĂ©cidez de crĂ©er votre 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.

SectionDescription
En-tĂȘteSe compose de name (nom du style), defaultColor (la couleur de carte par dĂ©faut peut ĂȘtre remplacĂ©e par l'attribut defaultColor) et depends (hĂ©rite de toutes les propriĂ©tĂ©s du style parent).
ParamÚtresDé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 constantesDĂ©finis comme <renderingAttribute> et comme <renderingConstant> permettent de rĂ©utiliser les mĂȘmes blocs de styles de rendu pour diffĂ©rents objets de carte
Section OrdreDĂ©finie comme un bloc <order>. Chaque objet de carte est recherchĂ© dans la section d'ordre pour savoir 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 ligne, 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 TexteDĂ©finie comme un bloc <text>. Chaque objet de carte affichĂ© est recherchĂ© pour savoir 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 PointDĂ©finie comme un bloc <point>. Chaque objet de carte 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 PolygoneDĂ©finie comme un bloc <polygon>. Chaque objet de carte 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 LigneDĂ©finie comme un bloc <line>. Chaque objet de carte 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 recherche tag/value/zoom, c'est-Ă -dire pour highway=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 si zoom=15 et la sortie sera 1 sinon.
  • VĂ©rifier si <case> fait partie d'un <switch> et si c'est le cas, tous les apply et apply_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.

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écialDescription
measureDistanceLineRendu de ligne pour la fonctionnalité Planifier un itinéraire
markerGuideline, markerPlanRoutelineRendu des lignes vers les marqueurs
routeRendu d'un itinéraire de navigation
gpxRendu d'une trace GPX
publicTransportLineRendu d'un itinéraire de navigation de transport public
walkingRouteLineRendu d'une navigation de transport public : itinĂ©raire piĂ©tonnier entre les arrĂȘts
rulerLineFont, rulerLine, rulerCircleAlt, rulerCircleComment rendre le widget RĂšgle-Rayon et mesurer la distance par tap
defaultColorCouleur par défaut pour remplir la carte (bascule le mode nuit/jour)
shadowRenderingInterne 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.
polygonMinSizeToDisplayInterne comment rendre les petites lignes et les petits polygones
roadDensityZoomTileInterne comment rendre les petites lignes et les petits polygones
roadsDensityLimitPerTileInterne comment rendre les petites lignes et les petits polygones
defaultSymbolPathSpacingInterne comment rendre les petites lignes et les petits polygones
defaultBlockPathSpacingInterne comment rendre les petites lignes et les petits polygones
globalPathPaddingInterne comment rendre les petites lignes et les petits polygones
debugTextDisplayBBoxAttributs pour déboguer le rendu et le positionnement du texte
debugTextDisplayShieldBBoxAttributs pour déboguer le rendu et le positionnement du texte
debugTextDoNotFindIntersectionsAttributs pour déboguer le rendu et le positionnement du texte
debugTextDoNotFindIntersectionsSameNameAttributs pour déboguer le rendu et le positionnement du texte
debugTextDisplayShortRoadNamesAttributs 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 séparé 'my_custom_style_night_mode.render.xml', 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) en utilisant 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="Default Rendering mode" description="Map optimization for respective User Profile based on base (parent) profile"
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">
<!-- Number of roads to display per tile -->
<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.