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. 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.

SectionDescription
En-tĂȘteSe 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Ú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 cartographiques
Section OrdreDĂ©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 TexteDĂ©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 PointDĂ©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 PolygoneDĂ©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 LigneDĂ©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 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 en commun
walkingRouteLineRendu d'une navigation de transport en commun : itinĂ©raire piĂ©ton entre les arrĂȘts
rulerLineFont, rulerLine, rulerCircleAlt, rulerCircleComment rendre le widget RĂšgle de rayon et mesurer la distance par tap
defaultColorCouleur par défaut pour remplir la carte (change 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.
polygonMinSizeToDisplayInternes comment rendre les petites lignes et les petits polygones
roadDensityZoomTileInternes comment rendre les petites lignes et les petits polygones
roadsDensityLimitPerTileInternes comment rendre les petites lignes et les petits polygones
defaultSymbolPathSpacingInternes comment rendre les petites lignes et les petits polygones
defaultBlockPathSpacingInternes comment rendre les petites lignes et les petits polygones
globalPathPaddingInternes 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 '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.