views:

583

answers:

3

I always end up needing the user's location on most web projects that I work on. I've used Maxmind's GeoIp, but it involves you importing their dataset and it needs constant updating. There are also other free and paid services, but I just wanted something simple that I could add to any site in a matter of seconds.

So this is sort of baited because I have a simple solution, detailed below, but I wanted to see if anyone else uses this technique and if there are any better solutions or if there are some unforeseen pitfalls.

+2  A: 

The implementation I currently use I've seen in a couple other questions, but I haven't seen it as the selected answer.

I've detailed this in my blog thenullreference.com, but here it is in short:


Essentially all you need to do is load Google's API loader script:

<script type="text/javascript" src="http(s)://www.google.com/jsapi"></script>

Then you have access to several properties that give you detailed location info.

The object you want to look at is google.loader.ClientLocation

  • ClientLocation.latitude
  • ClientLocation.longitude
  • ClientLocation.address.city
  • ClientLocation.address.country
  • ClientLocation.address.country_code - ISO 3166-1 country code
  • ClientLocation.address.region - country specific region in US this is state

*Note some of these can be null

For more info on this API check out here

Does anyone else use this? Does anyone have something that they use that is as simple and better? Are there issues with this approach?

I'm unaware of the coverage/accuracy of this solution, but I would think that Google keeps it updated and is probably pretty good.

Greg Roberts
There's also: http://code.google.com/p/geo-location-javascript/
Bob Aman
I only selected this one over the wipmania because I assume google is more stable/reliable to have my prod apps rely on it. It appears as both approaches are generally the same.
Greg Roberts
+3  A: 

I've used the wipmania free JSONP service, I'm not really sure about its accuracy but it's really simple to use:

// an example using jQuery
$.getJSON('http://api.wipmania.com/jsonp?callback=?', function (data) { 
  alert('Latitude: ' + data.latitude + 
        '\nLongitude: ' + data.longitude + 
        '\nCountry: ' + data.address.country); 
});

Check the snippet running here.

CMS
A: 

I use the MaxMind GeoIP City/ISP/Organization (Web Service), this cost $20 for 50,000 queries and is always updated (see http://www.maxmind.com/app/web%5Fservices#city). I like the fact that I don't need to worry about database updates since it is all done on there server.

I'm using PHP to send the client IP address and in return I get the latitude, longitude as well as other useful like the region code, city, metropolitan code, area code, country, ISP, and organization name if known.

meme