You Are Here:

Community: Blogs

Maximiliano Firtman's Forum Nokia Blog

Localize me... even if I don't have a GPS

firt | 01 December, 2007 20:24

Let's analyze many ways to get the user's geolocation.Uncentainty location in Google Maps

Recently, Google updated its Google Maps Mobile application with a new "My Location" feature that works even without GPS. If you do not have a GPS-enabled phone, you might see a blue dot surrounded by a light blue circle over the map to indicate uncertainty about your location. Let's see how we can do this.

We all know that Location Based Services (LBS) are a great feature to add to many mobile applications. I want information based on my location. I don't want to receive restaurants from other city, I want to see weather, driving directions or traffic data from my geographical zone, I want to geotag my photos, and I want to know what other people think about the place where I am right now. I also want to socialize, play games, and organize meetings with people near me.

So, all we need is a GPS? The first answer seems to be "yes". The GPS is one of the best solutions to find the location of a user. The GPS (Global Position System) gives the developer the coordinates (Latitude and Longitude) of the user with some error (usually less than 100m) using satellites. And the AGPS (Assisted GPS) could be even better. The AGPS (if you have a Nokia N95, just update your firmware to get this feature) is a data-based feature to help the GPS to find faster the possition of the user. With AGPS in Nokia N95 now I can localize myself in less than 10 seconds outside and sometimes I can do it inside a building too.

We can query the (A)GPS from many platforms, like Java ME (Location API), GPS with Symbian C++ or Python and then search for information in our local database or remote server using the Internet connection of the phone. If we need information about the street, neighbourhood or any other data regarding the calculated coordinates we can use some inverse geocoding service: if I have some latitude and longitude, can you give me the street name and address?.

At this time only a few devices have GPS integrated, and less people have a bluetooth GPS connected to the mobile phone.
But, what happen with the millons of non-GPS devices?

 Just look to these other solutions.

Solution 1

You can use the cell information of the phone to georeference the user. When you are connected to a mobile cell network you are in range of one or more towers. The range of the tower is called a cell. Since every cell has it owns range (100m, 500m, 1km for example) we really don't know exactly where the user is, but we know the zone with some error. Sometime this is enough useful to give the user the information. But, how can you use the cell to know latitude and longitude?

    a) In Java ME there isn't any standard solution. You can query the CellID (Identification Number) using System.Properties("phone.cid") on some devices only. For example, this doesn't work in Series 40 devices. It only works in some Motorola or Sony Ericsson's phones.

   b) In Symbian (Signed), you can get the Cell, Area and the Carrier (see this sample). With this combination you have a unique cell number in the world. You "only" need to convert this information in geographical information. How to do this? Here comes the difficult part. There isn't any direct way to make this conversion. You can use a Carrier API (if they have one), you can use some Open Source collection (like CellSpotting.com) or you can make your own one. 

   c) In dev cert Python, you can get this information. Just see this sample

That's what Google is doing with its recently updated Google Maps My Location feature. If you don't have a GPS, you can still find your location using the Cell information. Google can compare your cell number with querys from other users having the same Cell and GPS, for example. So, Google is making its own cell-coordinates database (or buying it).

You can see a video of how Google Mobile Maps works here:

Solution 2

The mobile carriers should bring developers an API to know the coodinates of some user. Using three cells in range, the carrier can calculate where are the user and give the information to the developer through an API. 

Solution 3

Use the IP address to find the location of the user. If the user is connected through WiFi (or 3G in some cases) you can try analize the IP address connected to the Internet. With the IP Address you can query some open database (like MaxMind or GeoIP) and then try to calculate where the user is with some error.

Solution 4

Ask the user! Don't be afraid to ask the user where is he or she! Your application can be smart and reduce the user's typing.

    - If the user knows its position: The user can insert zip code, city name, neighbourhood name, address, street name. Just ask for one quick entry. You can query your database or some webservice.

    - If the user doesn't know its position: The user can insert some information he is seeing, like a phone number found on a shop or some place name (parks, museums, stations).

Solution 5

Allow the user to select its current location from:
    - Home: ask the user where he/she lives when the application is installed and store this information.
    - Favorites places: query the Places database (GPS' devices) or make your own favorite places.
    - History: allow the user to select a recent place where he/she was. Order the list by frequency.

Visit this mobile Location design pattern in Little Springs Wiki.

 

Of course, you can make a mashup with all this solutions to develop some smarter way to get the user location. 

Do you imagine any other way to get the location of a user? I'm waiting for suggestions.

 

 
 

Rate This

 
 
Bookmark this page: DeliciousDiggFacebookGoogleYahooStumbleUponRedditDiigoTechnocratiTwitter  Share this page Share this page Print this Page Print this page Invite a friend Invite a friend
京ICP备05048969号    Email Newsletters Press Terms & Conditions Privacy Policy Sitemap Contact Us © 2009 Nokia 
RDF Facets: qdcZrelationQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fschemasE2fnokiaE2fFNE2d1E2e58E2eowlX qdcZtitleQSxForumE20NokiaE20BlogsE20WebE20SiteXLen qdcZtitleQSxForumE20NokiaE20BlogsE20WebE20SiteXLen qdcZtypeQUqfnZE44istributionQ qdcZtypeQUqfnZSiteQ qdcZtypeQUqvocZTermQ qdcZtypeQUqvocZVocabularyConstructQ qdcZtypeQUqwebZSiteQ qdcZtypeQUqrdfsZE52esourceQ qswZserviceQUxhttpE3aE2fE2fswE2enokiaE2ecomE2furiE71aX quriE71aZserviceQUxhttpE3aE2fE2fswE2enokiaE2ecomE2furiE71aX qvocZpartOfQUqfnZPublicationQ qwebZserviceQUxhttpE3aE2fE2fswE2enokiaE2ecomE2furiE71aX qrdfZtypeQUqfnZE44istributionQ qrdfZtypeQUqfnZSiteQ qrdfZtypeQUqvocZTermQ qrdfZtypeQUqvocZVocabularyConstructQ qrdfZtypeQUqwebZSiteQ qrdfZtypeQUqrdfsZE52esourceQ qrdfsZisE44efinedByQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fschemasE2fnokiaE2fFNE2d1E2e58E2eowlX qrdfsZlabelQSxForumE20NokiaE20BlogsE20WebE20SiteXLen qrdfsZlabelQSxForumE20NokiaE20BlogsE20WebE20SiteXLen qrdfsZseeAlsoQUxhttpE3aE2fE2fswE2enokiaE2ecomE2fschemasE2fnokiaE2fFNE2d1E2e58E2eowlX