Posted this in Mac programming forums first by mistake, my bad.
Am I missing something, or is there no way to get speed/heading from CLLocation / CLLocationManager? I can't believe Apple would leave those attributes out.
Given 2 position readings it's not hard to calculate. There's already a distance calculation. Given distance and time calculating speed is trivial. Calculating direction is a bit more involved and requires some trig, but even that's not that difficult.
I don't have an iPhone 3G, but I have a wireless 3G modem with built in GPS. From OSX I can read the gps data directly from the serial port (i.e. just a file in the /dev/... directory). Maybe this is possible with iPhone OS with it's built-in gps? If you can figure out what the device file is.
The SDK provides no access to raw NMEA data. Instead you have to use Core Location.
Prior to 2.2, you have to use some spherical trigonometry formulas and subtract coordinates to get direction, and DSP filtered numerical differentiation to get a good estimate for speed.