Retrieve the user’s current geolocation(lat/long) using current IP address of the user.
Retrieving User’s lat/long from their IP address using javascript:-
1.Using google clientlocation loader AP
if(google.loader.ClientLocation) { lat = google.loader.ClientLocation.latitude; lon = google.loader.ClientLocation.longitude; } else { //do error handling }
Note:- Here key is not mandatory.
It is supported by almost all browser but it is less accurate.
2)Using HTML5 Geolocation API
if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { lat = position.coords.latitude; lon = position.coords.longitude; }, function errorCallback(error) { //do error handling alert(error.code); alert(error.message); }, { maximumAge:Infinity, timeout:555000 }); } else { //do error handling }
It is not supported by the browsers which do not support HTML5 but it gives the accurate value.
3)Using Google Gears API
Download gears_init.js from http://code.google.com/apis/gears/gears_init.js
if(google.gears) { var geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(function(position) { lat = position.latitude; lon = position.longitude; }); } else { //do error handling }
To use google gears you need to have google gear installed,
which you can find at http://gears.google.com/ .
Note:- Different browser supports different API so to get the result in all browsers
use the code like given below:-
var error_val = 0; //Try W3C Geolocation (Preferred) if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { document.getElementById('lat').value = position.coords.latitude; document.getElementById('longitude').value = position.coords.longitude; error_val = 2; }, function errorCallback(error) { //do error handling alert(error.code); alert(error.message); error_val = 1; }, { maximumAge:Infinity, timeout:555000 }); } // Try Google Gears Geolocation //else if(error_val < 2) { if(google.gears) { var geo = google.gears.factory.create('beta.geolocation'); geo.getCurrentPosition(function(position) { document.getElementById('lat').value = position.latitude; document.getElementById('longitude').value = position.longitude; }); } //Try Google jsapi else if(google.loader.ClientLocation) { document.getElementById('lat').value = google.loader.ClientLocation.latitude; document.getElementById('longitude').value = google.loader.ClientLocation.longitude; } else { //DO ERROR HANDLING } }