How do you build a location-aware mobile internet site or app? There are at least 3 sources of data, but none of them easy.
When thinking about travel-related apps for phones, knowing where you are is generally really useful. Some phones have GPS included. If you write an app of some kind you can persuade people to install, that’s great, you’ll then know where the phone is (apart from the time it takes to acquire the initial position, and the fact that it eats up your batteries fast!). But if you’re working on the mobile web, you don’t have access to a phone’s GPS. And plenty of phones don’t have GPS anyway. So what can you do?
One option is to ask the phone operator to give you the position of the phone - they know this because they know which cell towers can see it. It’s a pain to have to do a separate deal with every phone operator, but there are various aggregators in the UK to make this less painful - for example Mobile Commerce, MX Telecom. There are still downsides - it is expensive (nearly 10p a lookup), it only works for people who aren’t roaming. And in most countries apparently there are no aggregators.
Another option is to use one of the open databases of cell tower IDs and locations. We haven’t really investigated this in depth yet - there are clearly several of them at different stages of development - for example OpenCellID, ZoneTag, CellDB, CellSpotting, GSM Location What’s the coverage like? Could they be combined? Presumably they work whether or not you’re roaming? And in the USA cell tower locations are supposed to be in the public domain, although without the IDs the operators assign this isn’t the complete solution (see the Navigating the Surface blog for some ideas around how to fill in that last gap). Of course knowing which cell towers the phone can see can’t be done from a mobile web page (can it?), but if you’re willing to create a downloadable app then this is a solution.
Finally, if your phone has wifi you can use a database of locations of wifi hotspots to locate it - this is commercially available from Skyhook and can be tested for free, or there are open versions such as WiGLE.
Of course you can always just ask a user to type in their location - a city and street name for example. But that would be cheating :-). Although if gateways such as FireEagle take off then there are many ways for people to say where they are, via different web apps they use as well as phones.
There’s been speculation about how Google Maps on phones determines location (for instance from the Mobile Observations blog and the Mobile Phone Development blog). We know they can use GPS and wifi location where available, but they also use cell ID positioning. I’d assume they have their own database of cell tower IDs and locations, as this seems a very Google-like thing to amass. If they’re driving around anyway capturing photos for Street View, wouldn’t it also be easy to gather up cell tower and wifi hotspot locations? Can the cell tower IDs be detected from the air - while getting detailed imagery for maps? Of course another option is to rely on the users who have GPS phones, and have Google maps surreptitously log cell tower ID sightings - sounds a bit evil, but that is exactly what is claimed in an interview with Google’s product manager for Maps for Mobile. At the scale Google runs, it must be more efficient to have your own worldwide database than to deal with every phone operator individually. The only way we’ve seen so far to get at this data is via the iPhone SDK Core Location feature. But if the data is being passed backwards and forwards from Google Maps on handsets to a server, it is only a matter of time before it is hacked…
If anyone has any further light to shed on this topic, feel free to chime in - we’d love to hear if there are better solutions!
Posted in Thoughts