I've had the impression that Google Maps provides more accurate walking navigation on Android devices which include a compass in addition to a 3-axis accelerometer and GPS receiver. Perhaps this is just my imagination — or a function of better GPS ICs on higher-end devices — but I started thinking about how this might work…
Low speed, changing speed, changing direction
When traveling at low speed and turning and changing speed frequently, GPS bearing can be unreliable. Walking through twisting and turning streets with buildings reducing GPS position accuracy could be a prime example
By combining compass bearing with 3-axis accelerometer (smoothed to correct for walking motion, perhaps) the device should be able to continuously track "North-South" and "Up-Down" vectors with respect to its own axes.
When the GPS-based bearing is unreliable (lost signal, excessive jitter, sudden turn expected) then the device can use its compass-based bearing instead of its GPS bearing. This might allow the device to confirm more quickly that the user has made a 90° right turn onto a side street as expected, or alternatively that the user has turned in the wrong direction.
When acquiring/reacquiring a GPS signal
Suppose a vehicle has just emerged from an underground garage or a roadway tunnel and is at a stop. Or suppose that turn-by-turn navigation has just been initiated in a vehicle parked on a street with 2-way traffic.
Perhaps the GPS position has just been fixed, but there is likely no GPS bearing and no preceding path of motion.
So how can the navigation device figure out the orientation of the vehicle? This will allow it to show an appropriate map heading, and to tell the driver to "start by continuing straight" vs. "start by turning around and going the other way."
The compass and accelerometer can be used to determine which direction the vehicle is facing, based on the assumption that a vehicle-mounted touchscreen device is almost always installed with the screen of the device facing away from the direction of travel.
Do real navigation applications do this?
I'm curious whether real-world navigation applications actually do use magnetic compass and accelerometer data to bootstrap, confirm, or otherwise augment satellite-based positioning and bearing?
What are the problems with the approaches I've outlined?
Are there important cases where these assumptions break down, or where they can be assumed to hold with high confidence? For example, a navigation device built into a car can take advantage of a fixed relationship between the vehicle's long axis and a built-in 3-axis accelerometer, while a repositionable smartphone or GPS tablet has to be more tentative.