Friday, June 10, 2011

Navit for Android vs OsmAnd

In this post I will try to compare Navit for Android and OsmAnd. But before I can compare them, I need to explain what they are.

Goal of the two projects

The Navit project wanted to give an open source alternative for various proprietary navigation systems. It was founded in the pre-smartphone area, so navigation systems were separated from other funtions or it was done in a car-computer. Because the team wanted to support as much as possible different devices, it is witten in C and it uses (almost) no libraries. It was also before OSM was well known and thus it also supports different maps. As you see, the system is very modular. The Android version of it just a very thin layer of Java GUI on top of the C code.

The OsmAnd project wants to give free (as in beer and speach) navigation to everyone. But it can only be used on an Android phone, so you should replace "anyone" with "anyone that owns an Android". That immediately makes it less free as in beer but still completely free as in speach. To achieve that goal, they (almost) exclusively use OSM data and try to minimize the mobile data costs.

Various features

As Navit is made for all kinds of devices, it makes no use of any kind of connection (except for downloading the map files the first time you use it). So it uses no tiles that come from somewhere else, it uses no external routing engine, no traffic info. Its just you and Navit that reads your map. As an effect of this "no external data" policy, a lot of work has been put into the different engines. Both, the rendering and the routing engine are completely configurable via the XML configuration file. different color styles and weights can be given to different types of road. Even the menu (the native menu, not the Android part of the menu) is configurable via the XML. The widgets you put on the default screen (compass, speed camera notifier, distance and time to your target, 2D ...) can also be configured in the XML file.

OsmAnd doesn't come with such a customisability, but it offers more options through it's menu. You can choose YOURS or Cloudmade routing engine (an internal routing engine is being developed right now). You can choose different tile suppliers (the well known big suppliers as Microsoft and Google, but naturally also smaller OSM tile suppliers) or use the vector data engine with about five themes to choose from.

Both apps offer a build-in search engine. With Navit you have search by town and street and for the Android version you also have fuzzy search (you type a clue and Navit searches it, a bit like Google search or Nominatim), the fuzzy search is off coarse not so elaborated like Google or Nominatim (a smarphone does not have as much memory like a search server) but it workes good in regions where OpenStreetMap has good maps. OsmAnd also offers internal search for town, street and building (though not all kinds of tagging are recognised, so you might be in a region where a lot of buildings are drawn, but none of them is found) alternatively for the building search, you can also search for an intersection with another street. Next to the internal search, OsmAnd also offers a fuzzy search using the Nominatim api.  
Data usage
Say now, as example that you want to go somewhere, be guided by a voice and use as less data as possible.

Navit does everything internally, so uses no data and you can use tts for the voice guidance. You do need to use an external tts engine for the speaking. There is eSpeak for Android and easyTts availiable in the market, they are both derived from the eSpeak project. EasyTts has more recent data, but not as much languages.

In OsmAnd, when you uses as less data as possible (pre-fetched maps, vector rendering ...) then you still need to use an online routing engine. One route typically costs less than 30kb. That's pretty cheap, but if you don't have a connection, it won't help you. If you change your route while you're driving, you need to download a new one. For all the other parts (voice commands, rendering the route ...) OsmAnd can do in offline. Spoken commands can be delivered by using CHK voice files (like used in tomtom) or by downloading voice files from within the program. 
Next to the online routing engine, OsmAnd can also use pre-created GPX files. So you can traceback some older route or follow a route that you created online. This costs no data. 

So to resume, you can use OsmAnd without data connection, but then you need to be prepaired (create a GPX file before you start or create your route while you're on wifi), otherwise you will use a very little bit of data. With Navit, you can be always offline.

Performance

Let's now come to the performance. I only have a basic Android phone, so it's likely that a reader will see better performance than I do. First of all, the Navit only feature: route calculation. 

Route calulation in Navit work pretty well. On my phone I can calculate routes that are up to 800 km long (so that uses a lot of memory). Off coarse it is not as long as routes created by online routing engines, but I believe 800 km is good enough for all usage.

If I compare the vector rendering of both OsmAnd and Navit, I see that they are both good but not perfect. When you drag a map, it takes a while before it gets rendered on both apps. By leaving out a features in the Navit XML file, you can get a lot better performance, but off coarse you lose functionality (as you see less on your map). 

The structural search in Navit is faster than the structural search in OsmAnd, but the fuzzy search in Navit is slower. This doesn't make such a difference, since you don't search that much and the typing still takes longer than the searching.
Installation size
In this category, OsmAnd is clearely the winner. The Navit app is very big and the maps are also big. This is only a one-time-download, but it takes a lot of space on your sd card.

Interface
"De gustibus et coloribus non disputandum est"

OsmAnd is native Android, so it follows the standard way you're used to on your Android phone. Navit isn't and thus it has a bit different UI and looks less good compared to your other apps. Navit has been Androidified a bit, so you have an Android menu with the most basic things (like search, navigate to ...) but the more difficult settings still need to be done in the original menu. This makes it a bit weird to work with but once you're used to it, it works fast.

In OsmAnd you can change a lot of settings via the menu, so you really need a good structure in the menus. This is unfortunately not completely so. Some settings are a bit in an illogical place. I don't think I could do it any better, but this is still a problem. The most used features are where you expect them tho.
Conclusion

Both apps are really good and it depends on your use, if you want to be completely offline, you could try Navit. If you want a low data usage but you're still able to use data, OsmAnd is the best one.

2 comments:

  1. Interesting. I'm looking for something like this as NavDroyd is too buggy. It's actually got worse over time with it not knowing about certain roads existing. I don't Navmii/Navfree seems to have gone from Market and my saved apk file doesn't work.

    Do either of the products you're looking at do postcode search. Though it sounds like only Navit is in the ball game as the other one isn't fully off line.

    Thanks.

    ReplyDelete
  2. Of course - Post codes are UK only and I've just realised you're not from the UK!

    ReplyDelete