I know the iPhone can and does use WiFi proximity to get approximate location. This obviously only can occur when some database in the sky knows the approximate location of that
Apple uses their own database since iOS 3.2 (prior to that they used Skyhook Wireless). This works by sending WiFi MAC addresses to Apple by GPS-enabled iOS devices. So if the device has a GPS fix, it automatically sends all WiFi MAC addresses it sees alongside with the GPS-detected location to Apple. There's no option to change this behavior except the master Core Location switch. Users have to accept this transmission of seen WiFi MAC addresses in the EULA.
Location detection via WiFi works the opposite way by sending all seen WiFi MAC addresses to Apple and they respond with the location. Actually they heavily optimize this by caching as many WiFi addresses on the phone as possible. So this even works (to some degree) on iPod touch without any network connectivity.
A weak spot of this algorithm are MiFi and similar devices (relocating WiFi hotspots). Currently, Core Location does not do a very good job of discarding obviously wrong WiFi locations. For instance, on indoor trade shows without GPS reception, be prepared to get wrong location updates because of the many MiFi devices out there.
To respond to your question about manually adding WiFi hotspots: no, there's no way to do that. Just use a GPS enabled iPhone/iPad running iOS 3.2 or higher and the MAC address will make its way into the database eventually. In my experience, this happens rather quickly.
Resurrecting a long-dead thread here to report that I just encountered a major conceptual flaw in Apple's Wi-Fi location sytem and how it self-updates.
I'm in the process of deploying a new Wi-Fi network aboard a cruise ship, and we are tuning and tweaking it as we sail back across the Atlantic from the shipyard in Spain to the ship's home port.
Whenever I'm on the lower decks and out of view of the GNSS constellations, the various location-enabled apps on my iPhone revert back to the location of the shipyard... It would seem that while the ship was in drydock on a temporary terrestrial internet link from the shipyard, the myriad apple devices on board dutifully reported back a bunch of unknown ESSIDs and BSSIDs which were correlated to both the device GNSS location as well as the IP location, presumably giving apple a high degree of confidence in the location. It would seem the ESSID takes precedence because the BSSIDs are all brand new. Given that it hasn't updated the location since we sailed and are on a satellite internet link that GeoIP tags as being in multiple locations in the US, It would seem that discrepancies between satellite position (especially one that is constantly changing) and IP address geolocation would cause it to reject the update in favor of keeping the previous update that has a higher degree of confidence.
Bottom line, don't count on wifi location being even remotely accurate on moving objects. Apple says they hacve no way of blacklisting ESSIDs on moving vessels such as trains, planes, or ships. This is probably something Apple should look at redesigning. It would also be really nice if there was a way to send position in an 802.11 beacon frame.
The iPhone uses Skyhook Wireless for determining WiFi location. You can submit your information using their submission page.
EDIT:
Apparently this is no longer true. Apple seems to aggregate this data from iOS devices directly now. See the comments.