Ask an attorney or a doctor a question, and you will NEVER get a single answer. You will get a range of options and choices. If pressed, you may also get guesses. Nobody will answer "this is the only way" unless they are also selling the same solution. It's your responsibility to decide which answer is best for you. I thought several of the suggestions (especially mine) were quite good.
Data is free. You have to work for information. (Me about 1975)
This is called tracking software. It already exists and comes in many flavours for several purposes. One is laptop theft control. The laptop contains a hidden application that calls home when connected to the internet. If the laptop is stolen and used, the application records as much information as can be delivered to the central server, which may be sufficient to locate the stolen laptop.
may give you some ideas.
Another is a form of spyware that tracks your browsing habits but can also send a users local IP address, traceroute, etc. If you're planning such a product, I don't want to have anything to do with it.
There is NOTHING that a hot spot user can do to determine their own location using only a laptop. Try it. With the computer in front of you, try to determine your own location. You can determine the ISP's gateway IP address and do a whois lookup to determine the ISP's location, but that doesn't work very well. For example, my gateway IP shows up as being in Santa Cruz, while I'm in Ben Lomond, 13 miles away. Not even close.
Basically, the hot spot, access point, location server, or whatever, will need to disclose its location to the user using some protocol. I sent you reference to an RFC that does exactly that via DHCP. All you need to do is convince all the access point manufacturers to support the protocol, or find some way to simulate it.
No problem, as long as you don't push this database into my laptop. Build a huge database of hotspots, SSID's and lat-long. Let the user VOLUNTARILY enter their location, and it will disclose a bunch of hot spots. Getting the database together might be possible using existing hot spot directories. Indexing might be difficult as half the hot spots are named Linksys, Default, or something equally useless.
There are many hot spot indexes on the web that have a good start. You can do your own, buy their data, or do some war driving. I've found many lists to be rather inaccurate. However, this part is doable with a large staff and a substantial budget.
You haven't explained how this thing is suppose to work. Does the user enter their location or is it deduced somehow? To the best of my limited imagination, there's no way for the laptop to locate itself using conventional tools. Therefore, the user must enter their current location. I like it that way anyways as privacy includes not following me all over the place, which seems to be what you're inventing.
Anyway, good luck. You might ask the stolen laptop vendors how they find the stolen laptops as it's exactly the same problem.
You then detail several things this project is trying to do:
Make a desktop app available to a laptop for downloading. Register users and allow them to log in. Determine the physical location of a user. Tell people the physical location of nearby access points Maintain an AP location database for the entire world.
Does this sound about right?
Why don't you tell us the reason for this whole exercise, what the user and company providing this service will each get out of your app, and why they would want it, so we can get a handle on just what it is you are trying to accomplish.
Jeff thinks you might be doing stolen laptop recovery or invading the privacy of unsuspecting users, I think it sounds like the authorization for a worldwide corporate AP network, someone else might think you are trying to tie together a global list of open APs, others might think this is a poorly defined homework assignment.
What is the end result of what you are trying to do?
IMHO, without owning all the APs and knowing their physical location, and owning the infrastructure and authorization network tying them all together, there's no way to get physical location the way you want.