Wednesday, December 18, 2013

The FastNav® GIS mapping component

FastNav is a commercial, offline mapping component for Windows XP/7, Windows CE (ARM) and Android. The Windows versions of this mapping component can be embedded in C# (Compact Framework or .NET Framework) programs, C++ programs, or any other language that supports COM. The Android mobile map software, pictured below, is currently a standalone app that accepts basic commands via intents, but it too could easily be altered to support embedding in other apps.

FastNav is currently used in Trapeze Mobility, which is used in Ranger® mobile devices for Taxis, Buses, Paratransit, and other commercial vehicle fleets; it's also being added to the Trapeze MDC software:

Here it is running inside a couple of Desktop Windows apps:

It also has been used as a non-graphical server-side component for routing computations.

FastNav was first deployed in the field over five years ago, and I always thought it should be something my company, Mentor Engineering, should market to other businesses, but they never did so. Other commercial mapping components have fantastically espensive licensing fees, so we could have easily undercut the competition and laughed all the way to the bank. However, to this day FastNav has never been marketed outside the company, even after Mentor Engineering was acquired by Trapeze Group. To this day there is not a single page on the internet about FastNav, so I decided to change that by writing this blog post.

FastNav is available as an SDK with numerous C# and C++ sample applications and about 200 pages of documentation in PDF and HTML format. Its drawing speed is competitive with similar products on the market (while showing a more detailed map), and its routing performance is excellent. For prospective customers, here's the most important page of that documentation:

SDK capabilities & limitations

This SDK was originally designed for map display and routing capabilities that you would find in handheld or in-car GPS navigation devices:
  • Read and decode NMEA data from a COM port
  • Show maps in 2D or 3D, in night or day mode.
  • Display and follow a vehicle as it moves on the map, display a computed route, display the current destination point, or display the entire map.
  • Display a map centered at a specific location and zoom level
  • Display a customizable number of street labels
  • Display and speak imperial or metric units
  • Allow the user to select a location on the map, and show information about the road at that location.
  • Look up cities, street names, house numbers, addresses, and points-of-interest (POIs), and retrieve the coordinates of, or route to, the location found.
  • Get the nearest approximate address to a longitude and latitude.
  • Find a route from the vehicle's location to a specific location selected programmatically or by the user.
  • Recalculate the route automatically when the vehicle moves off-route.
  • Give spoken turn-by-turn directions using either pre-recorded voices or a text-to-speech engine. Your program can obtain the current instruction in text form.
Beyond these basic features, FastNav APIs allow you to
  • Compute special routes with waypoints, or "reverse-geocode" routes from a series of points (new in FastNav 2.0)
  • Dynamically apply delays or block routing on specific road segments or sequences of roads (new in FastNav 2.0). TomTom licenses a real-time traffic API that could be used in conjunction with this feature.
  • Use multiple independent map controls in a single application.
  • Hide parts of the display such as the compass, polygons and POIs.
  • Select custom colors for your map.
  • Put any number of custom lines, polygons, POI markers, vehicle markers, icons and text strings on the map (in geographic space, pixel space, or geo-relative pixel space). New in FastNav 2.1: self-positioning text balloons and temporary messages that fade away after X seconds.
  • Produce GPS logs (NMEA format) from real or simulated data, and play them back.
  • Find out the latitude and longitude corresponding to mouse coordinates, or vice versa (new in V01R09)
  • Find the shortest or fastest route (new in V01R10)
  • Avoid or prohibit routing on ferries, toll roads, or other "undesirable attributes" if they are present in the map file (V01R10)
  • Examine individual elements or layers in a map file programmatically (V01R10)
  • Draw new shapes on the map "instantly", or do animations, using the animation layer (V01R12)
  • Search for either a city name or street name first, with a completion list that offers both city and street names (V01R13)
  • Search for complete addresses at once ("free-form" address search)
  • Get a list of turns on the current route (V01R13)
  • Find one or more roads or other elements near a specified location, sorted by distance, with address estimation (V01R14)
  • Find building numbers with non-numeric components (e.g. N4500-W4500 in Wisconsin) (V01R15)
  • Detect speeding, control a Virtual Car with the arrow keys, translate DLS and NTS coordinates, or speak directions in French.
Limitations of the FastNav library:
  • Facilities for creating NaviMap files or modifying them are not currently available outside the company. Contact Trapeze if you need to create maps. We currently deliver NavTeq map data.
  • Although the map control can display multiple maps, routing doesn't work between two different files, and the blue info box only works for the main file (this can be overcome by handling mouse input manually).
  • TMC is not supported directly; it requires an external database of roads, which is not included.
FastNav is owned by Trapeze Group. I don't know what Trapeze would want to charge you for licensing FastNav, but it can't hurt to give them a call. My suggestion would be, tell 'em how much you have been quoted as a price for Destinator or Telogis mapping, then ask how much you can save by switching to FastNav. You can also talk to me directly by leaving a comment on this post or mailing qwertie256 [at]

As the author of FastNav, I, for one, welcome your questions. Update: please note that I recently left Trapeze for different-colored pastures.

The views expressed in this post are my own and were not approved or endorsed by Trapeze.