Google Maps Mobile: How does it work?
Yesterday, there was an interesting thread on the Mobile Monday London newsgroup with various people guessing how the new Google Maps Mobile cellid based location works. Some people guessed it was Java/S60 native application accessing the cellid and triangulating the position.
First of all, Java ME can’t reliably (across all phones) get the cellid and this only works on some Sony Ericsson and Motorola phones via a platform specific System.getProperty call. Nokia phones don’t expose the cellid to Java ME programmers. No phones at all expose the signal strength of the current cell and the id’s of the neighbouring cells. Hence, it’s not being done in this way. You can probably access the cellid, neighbouring cellids and signal strengths within the Symbian S60 native version of Google Maps (that is if Google pays Symbian/S60 enough to gain access to the APIs). However, I don’t believe it’s being done that way. I believe the post by Steve Harrop of Vodafone gives the best clue how this actually works.
Instead, Google has paid some network operators in the various (currently 22 countries) for access to their wholesale location services. What the application probably does is fetch your IMEI and use this to obtain your location via the network operator wholesale location services. I also suspect any data Google might be getting from the network operators might be less accurate than it could be - so as to alleviate privacy concerns. There are probably other things going on like a fallback to a (less accurate) Google database of cellids/GPS positions where Google doesn’t have a location service agreement with the network operator.
Hence, my best guess at how this all works is…
App sends IMEI and Cellid (if available) to Google
If IMEI is for operator with location service agreement then get position
else if Cellid available then look it up in Google cellid/position database
else tell the user their phone isn’t supported
Hence, I guess, whether your phone is supported and the accuracy may depend on your phone model and your chosen network operator.
Update: Leading on from this, it’s possible that if you know another person’s IMEI the Google APIs could be used to track where someone else is. This might provide Google with further application possibilities.
Update: According to the FAQ on accuracy, the Google database is made up by taking "geo-contextual information [from anonymous GPS-readings, etc] and associates this information with the cell at that location to develop a database of cell locations". Also the FAQ on device support only mentions those phones that can supply a cellid via Java ME - so maybe Steve Harrop’s/Vodafone’s case is a special build just for VF? Then again, the Google Video mentions using adjacent cells that aren’t available via Java ME.
Update: Perhaps you can make use of adjacent cellids in Java ME - when the current cellid changes when you are moving!
Related Articles: