So after our problems with TeleAtlas, we have decided to go back to Navit. Although the programming is very dirty indeed, we did succeed and now we have a full navigation solution. Some highlights are:
- Since we used Navit code, the navigation plugin will be open-source. We will however not release a single byte of code or documentation more than required by the license. No tutorials, no documentation, sorry... We do not however exclude the possibility of providing the support in return for some contribution to QCar :-)
- We have a simple stand-alone map-viewer route-planning application using the same code the plug-in uses. We will probably distribute this separately to provide a preview of the navigation functionality, but we are not yet fully decided.
- The plug-in is pretty open and abstract and as a result, it can use different maps. The default for Europe is Marco Polo Große Reiseplaner 2007 (which is bundled with many cheap GPS receivers etc), but the plug-in will also work with other map types - such as Garmin (only the old IMG), OpenStreet Maps and bitmap-based maps.
- Map layers can also be generated dynamically using our API - we will use this for POIs (in various formats) as well as "buddy tracking" or "convoy ride" functions. It can also be used to display other things (i.e. weather, speed traps) based on external sources of information.
- Maps can be switched or stacked, so is possible to display say Google Maps (online or cached) aerial imagery as a background for a vector-based Map such as MP or OSM.
- Routing is very fast even on large mapsets. Right now we have a map with major roads of Europe with detailed (street-level) maps of France, Germany, Italy, Switzerland and Austria. Routes are typically calculated within less than 5 seconds, very long routes (i.e. Stockholm-Marseille) sometimes take up to 10 seconds. Re-routing when off-route is more or less instant.
- The routes are pretty OK, comparable to Google Maps or TomTom. I could find slightly better routes in areas I am familiar with, but for unknown areas, the routes are good enough.
Now the weak points:
- Some turn instructions are still a bit confusing. We still have to implement the correct instructions for roundabouts for example. Right now, the instruction may be something like "Turn left on the roundabout", but without counting exits. Also some ramps and higway exits can generate confusing instructions - this only happens in "major roads" maps, not in areas covered on the street level.
- The maps are not as detailed as the newest TeleAtlas or Navteq maps. We are still talking to these two companies though and we might be able to use their data in the future (technically the application can handle this data).
- We do not have the typical "birdeye view" yet, just regular north-up and heading-up. We had a test version, but it was pretty cpu-intensive and not smooth enough. We are now checking the possibility of using CoreAnimation to do part of the necessary manipulation. We would also like to implement a full 3D terrain display, but the elevation information is not available in the common road maps, so we will have to find another solution.
I will try to place some screenshots later this week.
Some screenshots, I will add a screencast from real navigation later.
And another screenshot, this time wih full street coverage (of Prague, CZ in this case). The street name labels are only a temporary solution, hopefully one of our ideas to make them more usable will work ;-)
We have dropped the old Google Maps module and replaced it with a generic navigation module, that supports any grid-based bitmap maps. Although we did not have high expectations from these maps (they cannot be rotated easily because of labels, they cannot be freely scaled etc.) this module is surprisingly useful. With good topographic maps it easily beats Navteq and TeleAtlas-based navigators for offroad navigation.
As I wrote elsewhere, we have now switched the maps again - this time to Open Street Maps. And as a bonus, we can now also display the contour lines (and in the future full 3D terrain) based on NASA DEM data. So with proper POIs and overlays, we are getting close to having very good fully scalable topographic maps.
Does it need an internet connection?
All maps are stored locally. Internet connection is only required to find/load the route at the moment (but it can also be loaded from a flash drive or similar device), because the local routing engine is not completely bug-free yet.
When the local routing engine is finished, the internet connection will only be necessary for optional functions such as traffic and weather updates, display of positions of other cars etc.
Cool! Which GPS antenna do you use?
I am using Navilock NL404P in one car and NL409 in the other. My colleagues are using either older Navilock receivers or Nokia LD3W (Bluetooth). The NL 404 is really great, because it refreshes the position 4 times every second, which results in nice smooth map movement.