I leave you with this for now.
I don't understand why you're using the compass. As has been pointed out, a magnetometer is confused by the metal in the car. So, by using the compass you're causing the pointer to be screwed up. On the other hand, as long as the user points the phone in the direction of travel, you (the author of Cachly) can use the GPS signal to determine north and which way to the pointer should point. I assume that's how my handheld and my Nuvi determine north. As long as I'm moving both point accurately to north. In or out of the car, the pointer on my handheld works correctly. So, if you use the compass to create the pointer this difference is why I have been confused by your program's behavior.