The HTML5 Geolocation API (see http://dev.w3.org/geo/api/spec-source.html ) allows for location information to be taken from any source available, including GPS, WiFi networks in range, and cell towers. All three of these are supported by Skyhook Wireless, which has a public API to get geolocation information based on all wireless data available. Using Skyhook instead of just GPS would allow laptops and desktops with WiFi to get geolocation information, as well as any machine with a 3G modem or similar. GPS support is mostly confined to cell phones.
I'm a moron. This is already implemented in some way. Missed that, sorry!