Tiramisù, a new theme for Oruxmaps and OpenAndroMaps

And here it is, Tiramisù, a new mapsforge theme for using OpenAndroMaps in Oruxmaps (and compatible apps).

Based on the highly appreciated Elevate theme from Tobias Kuehn it is primarily aimed at bikers and mountain hikers with high density displays on their phones. This is a preliminary (beta) release; in my testing it just works, but I’m interested in knowing how it works for other people, so I’m making it public.

Waiting for a proper legend here are a few hints and a brief list of what I changed and why.

High resolution graphics

Starting from well known icons collections and adding some of my own, I drawn a new symbol set in SVG that I then rendered at different resolutions. Unfortunately mapsforge can’t automatically switch resolution so, waiting for scalable theme support in the next version, there are actually two themes, the standard one for 300 dpi devices and the HR one for 450 dpi. Other than the linked images the themes are identical.

I haven’t had the chance to test it on smaller phones, it may work or not.

Higher contrast

I increased a lot the contrast between different stuff to have a better readability in outdoor conditions. My Galaxy Nexus’ screen isn’t that bright for outdoors usage, and this makes a real difference.

Progressive rendering

Patterns scale while zooming in to keep their dimension in proportion with the rest. Buildings and residential areas are darker when zoomed out to make small hamlets and villages stand out better, and lighter when you zoom in, in order to make symbols more legible.

Paths and tracks widths and dash strokes scale too.

Simplified landuse

Some landuse patterns have been removed or joined to reduce visual clutter. Vegetation in particular is reduced to trees, scrub, and cultivation (orchards and vineyards).

New color scheme for tracks and paths

I usually don’t care much about trail classification, but sometimes knowing the difficulty of a path or a track (within the limits of OSM accuracy…) can be handy, for example to compare two nearby alternatives.

I render all paths in the T1-T3 range using a continuous line. T1 is brown, T2 red and T3 orange. Line thickness changes slightly, too. The idea is to have a similar aspect, while still being able to distinguish the SAC scale value if needed. T4-T6 paths and ferratas are rendered as a dashed black and light brown line to make out that’s serious stuff. Unclassified paths have a brown-orange dash stroke.

Grade 1 tracks are rendered like minor roads, just a little smaller. Grade 2 to grade 5 have a light yellow and brown dash stroke. The higher the grade the darker the brown and the longer the yellow dash. Unclassified tracks have a dotted red core.

MTB scales are expressed in form of a number in a circle, visible only at higher zoom levels. The number on the top is the uphill grade, the number on the bottom is for the downhill.

More discrete rendering of hiking and cycling routes

I also usually don’t care much about network routes. So I use a subtle highlighting, red for hiking and blue for cycling. The idea is to make it just visible enough without getting in the way when you don’t care about it.

Workaronds for Mapsforge quirks

Mapsforge is unpredictable in many ways. In particular symbols often randomly appear and disappear at different zoom levels without apparent logic. I render a semitransparent red circle behind huts and shelters, and an cobalt one behind water sources (including fountains). Most of the times when the symbol is killed, the circle is not, so you still know there is something in that point. It doesn’t always work, but it’s still better than nothing.

The disclaimer

OpenStreetMap is full of errors. Mapsforge is quirky.  And I’m not any better.

While things generally work well enough, there may be situations where wrong data or a wrong interpretation can lead to dangerous situations. Be careful, gather as much information as you can and please be kind: when you find an error don’t complain, go to the OSM website and fix it when you get back home. Or at least leave a note for the others, someone else will take care.

How to install

First download the zipped theme file.

This version is deprecated. You should get the newer one instead.

Then follow the standard instructions at the OAM website.

When done, open the Oruxmaps settings and change the mapsforge text multiplier (Settings->Maps and scroll way down) to anything that makes the text readable on your screen. As a rule of thumb 1.5 for 300 dpi and 2 for 450 dpi is a good start.

Then check the default zoom level (Settings->Maps->Zoom settings->Default zoom) and set it to 100%.  Oruxmaps has the arguable feature of setting it to higher values by default on high density displays. This makes a lot of sense for raster maps, but makes vector ones look jagged, so you really should set it back to 100%.


Did I forget anything? just tell me in the comments (the “leave a comment” link is at the top of the page; very smart , WordPress, very smart…).

Italian, English and French accepted.


11 thoughts on “Tiramisù, a new theme for Oruxmaps and OpenAndroMaps

Add yours

  1. Hi, this is probably the best* oruxmaps theme ever :)
    I’m writing for 2 reasons: letting you know that this theme works perfectly also with a 233dpi screen (xperia arc s) and asking for a mod, but first a little premise:

    I think that, while useful as a reference, your way of showing the mtb:scale is difficult to use for a cyclist.
    While cycling in an unknown place is useful to be able to see “at a glance” [ie. from a “low” zoom level] the mtb:scale of every path in the vicinity, hence the number in the little circle, visible only from an high zoom level, is kinda useless :(

    After the premise, here’s the request: could you make a mtb fork of this theme? A theme where the paths’ colour depends on the mtb:scale and not on the sac:scale, where maybe you could show the sac:scale with the small circle you are now using for the mtb:scale.

    Thanks, Fabrizio

    *well-finished , with a professional look, with the right text size for all the captions for every zoom level

  2. Hi Fabrizio, thanks for your kind words. Being more a biker than an hiker you can be sure that MTB support will come, eventually. I have no release date planned nor estimated, let’s say before next summer. Apparently there is finally a lot of work going on around Mapsforge and a new release may appear “soon”. So I’m not particularly inclined to waste time to work around bugs that may be solved in the next month. Also, before forking I want to reach a stable status, and to tell the truth I’d avoid forking if at all possible. I filed a number of feature requests to the Mapsforge today, including the support for modular themes. If accepted it would make things much easier and open up a lot of possibilities to have maps that are rich of information but at the same time show only what needed. Even if accepted, however I doubt it would come soon, so I’ll probably fork anyway.

    I chose to start from the hiking version for a number of reasons, the two main ones being: a) the SAC scale tells a lot even to a biker, while the MTB scale tells very little to an hiker and b) there isn’t a lot of MTB tagged paths on OSM. The current system is actually a last minute hack that I wanted to try, and it wouldn’t be that bad if things worked correctly. In theory the labels should appear at zoom-level 13 but usually they don’t until 17-18. There is the same problem on network name labels. Since they do no harm I left them there, but I plan to do something better when possible.

    So… stay tuned! :-)

  3. Hi, I understand your reasons for the choice you made, I also understand the huge “mess” that forking usually bring and I also know how unpredictable mapsforge development can be!
    That said, in my area (Brescia) almost every path is tagged with mtb:scale while sac:scale is rarely present, so… In the mean time I’ll mod your theme by myself :P
    Thanks again!

  4. Fabrizio, that’s interesting… can you point me to some spots with good MTB tagging, possibly with different values in a restricted area? The most time consuming part of theming is finding spots with a good variety of tags, I spent hours panning and panning and panning…
    Forking isn’t necessarily a mess, it depends on what you do. In my vision a complete cycle theme should use (at least) mtb_scale on paths and mtb:scale:uphill on tracks, but also fall back to SAC scale and tracktype when the mtb scale isn’t present, letting the user know what scale is used on that particular path in a clear but not intrusive way. It should also show access restrictions, give more emphasis to cycle networks and probably more. I think it can be done, but it involves a lot of logic even before putting the hands on the code and, above all, it means changing a lot of parts scattered along all the xml file. So it is best done starting from something stable, and given that in the next OAM update we should get full SAC scale and visibility for paths the current situation isn’t yet stable. Plus the Mapsforge update pending. And then it will take a bit of time to work out all the details.
    If all you want is to replace sac with mtb that’s easy to do and to maintain in the same file commenting and uncommenting a bloc of text. I can do it before the end of the year, if you want. It just isn’t what I’d call an MTB theme.

  5. Hi, this area is really a good example of a detailed and thorough tagging of paths and tracks, with both mtb and sac scale in almost every path. There’s also the concurrent use of route=mtb and network=lwn on a lot of tracks/paths.

    Imho visibility for paths, surface and full sac scale are not interesting for mtb, since if sac>t4 the path is impossible for mtb. Also surface and visibility are rarely used right now.
    Of course if you manage to render all these tags in an efficient and not cluttered way, you’ll create the perfect theme.

    Thank you for the offer of a temporary mtb theme, but I already modded your xml to display mtb:scale of tracks and paths using some colours I liked from an old theme and if the mtb :scale is not present it renders the sac_scale using a dashed orange over the original sac colours.
    I also render the mtb:scale:uphill with small black dashed lines over the path core and the route=mtb (alongside the hiking routes).
    I also modified the tracks casings to show the tracktype since now the tracks core is dependent on the mtb:scale.

    If you want I can send it to you, I used it today and I think it’s not bad.

    Some considerations on your theme:
    Imho is really difficult to distinguish tracks between tracktype=2 to 5.

    Take a look at this way:
    when the pipeline passes over the “white” area it changes color from red to brown, strange…

  6. Hi Maki,
    Congratulations to your theme! I like it that it has its own clear
    purpose and feel. Here are some first impressions and thoughts:

    I think your rendering of networks works good! My
    idea was kind of similar – not too much in the
    way but visible enough – but those thin borders don’t work at higher
    dpis probably, so those wide transparent borders are a great

    You made a great icon set which is a good alternative to existing ones. For my taste a bit too many colors, but that’s probably me.

    On 233dpi the icons are a bit too large and cover much of the map at
    least at zoom 15-16 – but the last part should be on higher dpi as well?
    But probably one has to use 17-18 all the time on hdpi.

    I know from hiking in Italy that maps there don’t have much
    landcover, but in the German alps there are mountains which are
    completely mapped, e.g. here: http://www.openstreetmap.org/#map=14/47.6584/11.4985 It’s mapped a bit too detailed for my taste, but with your reduction it looks as if part of it are not mapped at all. Maybe some unobstrusive light green for all meadows/grassland/fell etc.?

    What you might have missed: steps with sac_scale are colored accordingly in Elevate, e.g. http://www.openstreetmap.org/way/83640555#map=19/47.59156/12.19688
    They are still the same in Tiramisù, so maybe you should adjust that.

    Just some things I noticed at a first look. I know from experience that it takes a lot of fine-tuning and there are so many decisions and possibilities till a theme has covered all details. So keep up the good work!


  7. Hi Tobias,
    yes, I had some problems with Elevate because of the thin lines almost blending together, not only networks, but also tracks, that I made much larger since they looked almost like a single line, much more like paths than roads. It’s the same problem with icons.
    Some icon colours are a bit flashy, in particular sports and education, I’ll probably tone them down a little. The real problem is that in a well mapped city there are too many symbols to display, that’s one reason why I’d like to have modular themes.
    Speaking of size you nailed it, you are seeing everything 35% bigger then me. And yes, I’m using one zoom level higher to cover the same area, with an S4 it’s two zoom levels. It’s a real problem, especially because it influences the ideal zoom-min of appearance: let’s see what SVG icons and scalable maps bring to next version of Mapsforge.
    Try with this symbols, I brutally rendered them downsized to 70%. Some don’t look good, scaling down breaks the pixel grid optimization.
    https://app.box.com/s/9biaiqwm761ztujpmnaw (It’s only the icons, not the patterns)
    Steps are something I couldn’t find and I forgot about them, thanks for the pointer. I need to check tunnels as well.
    German mapping is stunning.
    I kept land use to the minimum I need, but the code is actually still there because I’m not 100% done in that area. Forests and scrubs are important for orientation and for ski touring, wetland, screes and rocks can tell something about the path quality. Grass and such I don’t really know… imho that’s more clutter than something useful. I also think that it would interfere with the natural reserve highlight. I really don’t want to think what that particular shade of green means, especially because it’s difficult to evaluate in outdoors conditions. I have to experiment a bit more.

    Many thanks for your analisys.

  8. Hi Fabrizio,
    I’ll start from the bottom. The pipeline is red because I used red as debug colour and I forgot to change it back to something reasonable. :-) It should be drawn on top of landuse, but looks like it goes below the forest and the cliff, don’t know why. Since it’s underground I’m not even sure that it makes sense to show it at all.

    Gardasee… that unforgettable Vertrider’s video, I should have thought about that :-) Nice testing spot, thanks.

    Tracks are my enemy. SAC scale makes a lot of sense, MTB scales too. Tracktype is meaningless. Grade 1 is clear, it’s paved. Grade 2 is unpaved but offers a “paved like experience”, ok. Grades 3-4-5 are vague… they don’t express precise characteristics that I can find on terrain. In my experience the best I can extract from that tag is that between two close tracks the one graded 5 is in some way worse than the one graded 3. So my goal is more to show the relative difference between them, rather than the absolute value that tells me nothing. I’ll try to mark the difference a bit more, but I don’t think that hikers really care. For MTB it will be different. The ideal thing would be to use surface, smoothness and incline, but these are rare. There is also the problem that while line widths scale when zooming dashstrokes don’t, so the proportion changes with every zoom level and that makes even more difficult to recognize dash patterns.

    For MTB the goal will not be absolute fidelity to OSM data, for the reason you expressed, too much data leads to clutter. In general uphill and downhill difficulty should be proportional, unless they differ I’d show only one. MTB scale on paths already expresses both uphill and downhill, uphill scale seems more useful on tracks. When mtb specific data is absent the idea is to mix and match available data to estimate an equivalence. It can be found by logic (T4+ -> MTB 6 is quite sure) or doing statistics on paths that have both MTB and hiking grades to see if there is a common correspondence. Visibility isn’t generally important (as long as your GPS works), but it can tell something about track quality. Bad path visibility probably means not so rolling terrain (rocks or pasturage for example). It’s just an idea, it may work or not, but I want to try.

    Your mod isn’t bad at all, personally I’d just try to make it lighter, for example removing hiking networks (maybe keep the names). When you need them just switch theme. I also prefer to have similar colours for similar stuff, but that’s personal. I can’t stand SAC colours, my brain just refuses to put red and blue in the same category. :-)

  9. Hi Maki,

    I just tried your smaller icons and now it also works great on 233dpi – much more icons are visible in dense tagged parts and also more of the map. If you leave font scale at 1 it’s usable! So maybe at the moment the best idea is to use different sized icon sets and font scales for different dpis and adjust dy for nodes so that every icon size works.

    I like to have meadows etc. shown, because they have some use for me: to know where is the next place where you can lay down to have a nice rest, where you can walk without path, where you might have a great view because there are no trees… if it shows the same color as if not mapped I can’t know those things. But that’s probably me.

  10. Hi Tobias,

    well, what you say makes a lot of sense. I’m working on patterns right now. The challenge is to make something decipherable at first sight while avoiding clutter. Relying on colour alone in my experience doesn’t really work outdoors (and requires good memory anyway), but at the same time patterns make things hard to read. In fact I’m reworking forests because yesterday I couldn’t read contour lines, which was much more important that knowing I was in the woods (I already knew that :-D). So I’m making the pattern flatter and lighter. I’ll introduce different woodtypes too, I finally managed to draw conifers in an half decent way. I still have to think about grass and heath, I’ll see before the final release.

    The problem with low-res icons is that I lose pixel-optimization, I need to redraw some of them, but I’ll definitely do for the final release. Font-scaling in my experience works decently from 1 to 2 which should accommodate most needs. Dy in theory should change too, but then it becomes a lot of work and you aren’t sure about the result because you can’t anticipate the combination of icon size and font scale the end user will chose.

    Thanks again for testing!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a free website or blog at WordPress.com.

Up ↑