Following on from my post yesterday 'Calculate distance between web site visitor IP and list of locations' I've come across an interesting revelation.
The client was off playing with my new page that establishes the web site visitor's geolocation from their IP number. And he complained because nothing was right.
Turns out he was browsing the page via iPhone. So I set up a test with my own iPhone, and hey presto, the IP geolocator system database thinks my phone is in Sydney. Which is definitely incorrect because it's sitting on my desk in front of me here in Melbourne. I proved the point by switching the iPhone's wifi back on, and now it correctly reports its location as Melbourne.
What I presume is that mobile carriers assign IP numbers to mobile devices from a central place – eg the IP range is probably designated to their head office or datacentre. And thus, like me, your phone can think it's in Sydney when in reality it's in Melbourne.
Of course iPhone Apps can access a phone's coordinates in a different way via the cellular network – hence some applications popping up a message asking you to agree to them accessing your location. That's how cool gadgets like Four Square work.
But it you rely on IP/coordinate lookups then the answer will be wrong.
For the moment I think we'll disable the fancy stuff on the web site for people browsing with mobile devices, but now I'm wondering how we can deal with this revelation.
The source of your IP address assigned to you is your default location. The experiment that you’ve done with your iPhone4 shows that fact. There were two different service providers which were assigning an IP address to your devices.