logo separator

More flexibility in style files - style changes required!


Since r2906 there are some important changes in the style processing which gives the style developer more control about converting OSM elements into the Garmin map elements. As a benefit the routing network is up to 25% smaller which results in faster route calculation and slightly smaller img files.

Changes in the style system:

  • Styles can now have a <finalize> block. This block is executed for each element if an element style definition matches. The finalize block must contain actions only. This is sometimes useful for general rules and to assign the numerous mkgmap:* tags.
  • The four labels to pois/lines/roads/polygons are no longer assigned automatically. They must be assigned using the name and addlabel function. This also means that ref tags are no longer used as labels automatically.
  • Access restrictions of roads are now defined by setting special mkgmap:* access tags (mkgmap:car, mkgmap:foot, mkgmap:bicycle, mkgmap:truck, mkgmap:bus, mkgmap:taxi, mkgmap:emergency, mkgmap:delivery). Roads are blocked for a specific vehicle type if the mkgmap:<type> is set to the value no. The new addaccess and setaccess actions help to assign all values at once.
     highway=motorway { set mkgmap:foot=no }
     This rule blocks access of pedestrians to motorways.
  • mkgmap:carpool does no longer automatically set all access restrictions. In the trunk mkgmap:carpool=yes lead to set all access restrictions to no except emergency, bus and carpool. It is not fully clear if the bit toggled by mkgmap really controls if a road has a carpool lane or not. So use it with caution.
  • The road speed is no longer automatically calculated using the maxspeed tag. New style functions maxspeedkmh() and maxspeedmph() allow to perform the same by setting the mkgmap:road-speed-class tag. Due to this change the --ignore-maxspeeds option is superfluous and has been removed.

The changes listed above require a change of all style files. But there are three new include files (inc/compat_points, inc/compat_lines, inc/compat_polygons) which ensure compatibility to pre-r2906 releases. They need to be added to the new finalize section.

Example lines file:

 boundary=political [0x1c resolution 19]
 include 'inc/water_lines';
 include 'inc/contour_lines';
 # add the following lines to your lines file
 include 'inc/compat_lines'; 

Please refer also to the style manual.

Posted by wanmil on 22 Dec 2013

Latest commits

  • mkgmap-r4767 raise minimum resolution of overview map to 13 to match the alignment of tiles produced by splitter with default resolution ....
    11 jun 2021
  • mkgmap-r4766 map-split.patch - fix possible "Problem writing line ..." message which caused data loss of huge polygons.
    11 jun 2021
  • mkgmap-r4765 rework roundabout checks (roundaboutchecks4.patch by Mike Baggaley).
    10 jun 2021
  • mkgmap-r4763 - fix bug in Coord.distToLineSegment(Coord a, Coord b), it returned Double.NaN when a and b are the same.
    08 jun 2021
  • mkgmap-r4760 minor performance tweak: only create node instance when it is needed.
    06 jun 2021
See more...