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-r4315 code cleanup: remove obsolete call of Collections.sort() after call of MdrUtils.sortList() which already does this..
    21 oct 2019
  • mkgmap-r4314 fix assertion error when option --make-poi-index is used.
    21 oct 2019
  • mkgmap-r4313 Improve code readability, no change in output expected.
    21 oct 2019
  • mkgmap-r4311 Ignore turn restrictions in ElementSaver when map is not routable to supress warning "ignoring unspecified/unsupported restriction" for type=restriction relations..
    21 oct 2019
  • mkgmap-r4310 Code cleanup, no change in output expected.
    21 oct 2019
See more...