It seems that it would be really convenient to use Google Geolocation API in your case, but unfortunately it is not free :(