I also visited an Apple Store "genius bar". But the "export helper" there seem to be pretty clueless about it. They don't have a diagnostic to check if the GPS hardware is working or not. All the guy can suggest was:
1. reinstall factory OS, or
2. replace the phone.
After that,I decided to a little more testing myself.
So I started the compass app that comes with iPhone, because it gives me the coordinate reading down to the seconds.
Here's what I have observed so far:
(I turned off the WiFi so my phone would have to use the hardware GPS chip ONLY to get its location info)
1. The Compass will give me the correct GPS reading each time after I restart it, i.e. swipe it upward to exit the app, and click it again to relaunch it. When I am walking, each time I relaunch the Compass app, I will get a fresh reading in the coordinates. This shows that the GPS may need to be initialized for it to work properly, as it would be what an app would do when it is first started.
2. However, if I just keep on walking, my GPS location would NOT update anymore, UNTIL a few minutes after I stop walking. After a few minutes (I used a timer and it turned out to be around 4 min), the reading is updated again.
It almost seems that the motion sensor disabled the GPS service from updating the apps, until it detects the any motion has stopped.
I am going to do more testings and try to replicate my findings.
I know for sure that #1 is definitive, meaning it can be consistently reproduced. #2 needs more tests. However, so far it appears that it would take me about 4 min after I stopped walking for the GPS location to be updated.
**I hope other readers who experienced similar problem with GPS can do these tests and report their findings to this thread so to give Apple engineers some clue to debug this problem.