A bit more complex and expensive an option…..
I use the memory map app, downloaded with the 1:25,000 or 1:50,000 of the area I’m in from what I already have on my pc. I don’t have it on all the time but it is nice to have it in my pocket & to turn on every now and again to check the route.
Using the internal GPS on my 3g it’s rubbish – inaccurate and drains the battery in no time at all. However as mine is jailbroken I have the BT gpsstack app from cydia so it is possible to use a separate bluetooth gps. Now the accuracy is much better and a 6hr ride uses less than 20% of battery life so would be fine for a whole weekend of riding without a charge (bivvy trip etc).
there are a few of the above which I have not tried and am going to have a look at though. Anything for me that requires a data connection is a waste of time though as I don’t have a phone signal (and certainly no 3g) for much of my riding.