When out in the middle of nowhere (such as over the Pacific or Indian Ocean) , the iPhone gives a good position from a windowseat in the cabin, but nothing at all while in the cockpit. Reason is that the electrically heated windshields blankets out the fickle GPS signal (at least that is the case in our aircraft). And you're right - the flight mode on the iPhone disables the GPS-positioning. If you jailbrake your iPhone, you can separately turn on/off the positioning and phone, which solves the flight-mode problem.