MotionX has a great app. Its only about 3 or 4 Au$.
You can downlad the maps before you go riding so that if you are in a 0 reception area it will still show details. You can record a ride, this will include speed (avg and top) distance and elevation / climbing.
You can email the record in a format that most programs can use, such as www.strava.com.
Really good program for the price.
I use CycleMeter by Abivio. It has all the features the OP requested and then some my favorite of which is the Announcement option which will “speak” to you each hour / mile because I carry iHome speakers in CamelBak rather than wearing headphones (afraid of cars) and it will pause song to give me the info. Also, it will “speak” FaceBook so I can hear my wife say “David, the kids are hungry, will you be pedaling near the house anytime in the near future?” as well as feed Twitter with route info so she can figure approx where I’m at in my normal route. Then, at the end of the day, share my route map on Daily Mile.
Rob, thanks for the pointer to MotionX. I’ve used it enough to know a few things about it:
It does everything I was looking for and more.
It's easy to setup.
At first I had it telling me my speed and distance every minute. I found it very distracting as I rushed to mount and ended up screwing up the mount. I toned it down to every 10 minutes so now I can mount in peace.
Just imagine, had I had the $$$ I might have paid Garmin hundreds of dollars for the exact functionality.
It adds a whole new dimension to unicycle riding and practice (as if there aren't enough already)