To obtain a semi precise GPS position, you need at least three satellites (but usually four or more is required to obtain a decent degree of precision) to triangulate your position. The more you have the better the accuracy.
A GPS receiver needs to power its antenna, and constantly process the signal sent by each satellite. Remember that satellites are continually transmitting messages. (50 bits/sec as far as I can remember)
Satellites emit messages specifying their exact location, trajectory, speed, the time each message was sent and the rough location of all the other satellites in the constellation.
By comparing this info to the time the signal was received a distance from the satellite to the receiver can be determined. When you have three or more satellites you can triangulate your location in three dimensions relative to the positions of the satellites.
The iPhone (and other phones) use A-GPS, which is designed to (believe it or not) among other things, make the GPS work better in poor reception areas (cities?) and reduce the amount of information that the receiver needs from the satellites, thus saving battery power from the Antenna.
The parts of the GPS signal about location, speed and orbital trajectory usually drop out first when in low reception, that’s where A-GPS fits in, feeding that info for every satellite in that part of the world to the phone, from a central database via the mobile network. Now the phone just has to search for the short timing signals from each satellite, which are easier to receive than the other parts of the transmission.
When all that information is calculated, an algorithm (there are a few as far as I know) is used to compute the position of the actual receiver.
Now add to that the fact that GPS messages are encoded and that satellites broadcast the messages at about 50 bits per second. And that each message is really a subset of frames with time, position, error correction, etc, etc.
There are more factors involver, but for the purpose of making this simple, the GPS’s cpu must constantly use the radio (already power hungry) to capture the signal (which may be weak!) for usually four or more (sometimes up to 20!) satellites that are constantly sending packages, then it must decode and process them, perform calculations to analyze the results and in some cases draw a map or feed an application with the info.
As you can see, this sounds easy but it’s not. There’s a lot of CPU processing involved in the back (plus the antenna’s power!)
So the GPS power consumption usually comes from the real time nature of the operation. Powering the antenna, listening for information and processing it, uses power, more than just a standby radio antenna (the phone) waiting for a call. Plus the A-GPS uses also the phone’s radio and (if available) Wi-Fi networks to determine its location (and use less GPS info), which means, more power is used at the same time.
The Wikipedia GPS page has a lot of detailed information if you want to get the specifics and/or dive into more GPS geekery, including the math and error correction stuff.
If jailbroken, SBSettings allows one to turn off everything: Data, Wifi, Bluetooth, 3G, Edge, Phone, SSH, etc. but leave GPS enabled.
If not jailbroken, Settings > General > Network lets you turn off WiFi, 3G, BlueTooth, and Data, which leaves GPS, Edge, and Phone. Turn brightness all the way down. This ought to extend battery life quite a bit.
Best Answer
When you give an app permission to use your location, in other words enable GPS for it, the app may or may not use it. Some apps use it briefly to get a fix once each time you start the app, some apps don't use it until you perform a certain action in them, others use it whenever the app is open, and some even continue to use it after you've closed the app - for instance if you're doing turn-by-turn directions in the background.
To know if an app is actively using the GPS, and thus draining the battery faster than normal, is to look in the status bar next to the clock. If there's a little white arrow, then an app (probably the one you've got open right now) is actively using the GPS.
If you don't have an app open, and the arrow appears, you can find out which app is using the GPS by going to the
Settings
app, selectingLocation Services
and going down the list of apps. For each app there's the app name, and then a selector that determines whether that app is allowed to use the GPS. Scroll down that list and look for a little arrow between the app and the selector. If any app is using the GPS right now, it will show up as an arrow next to the app name. The color and fill of the arrow provide additional information, which you can find out about here: How can I tell when the iPhone is actively using GPS versus only using region monitoring? . That question also gives a screeshot of theLocation Services
screen with an arrow showing, so you can get an idea of what to look for when you go through your list of apps. It's for the iPad, but the iPhone is very similar in design.If an app is using GPS and you don't want it to, change the selector to
OFF
and it will stop using the GPS and draining your battery.