HTML5 Geolocation is used to locate a user’s position Try It
Locate the User’s Position
The HTML5 Geolocation API is used to get the geographical position of a user.
Since this can compromise user privacy, the position is not available unless the user approves it.
Browser Support
Internet Explorer 9+, Firefox, Chrome, Safari and Opera support Geolocation.
Note: Geolocation is much more accurate for devices with GPS, like iPhone.
HTML5 – Using Geolocation
Use the getCurrentPosition() method to get the user’s position.
The example below is a simple Geolocation example returning the latitude and longitude of the user’s position:
Example
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML = “Geolocation is not supported by this browser.”;}
}
function showPosition(position)
{
x.innerHTML = “Latitude: ” + position.coords.latitude +
“
Longitude: ” + position.coords.longitude;
}
Example explained:
- Check if Geolocation is supported
- If supported, run the getCurrentPosition() method. If not, display a message to the user
- If the getCurrentPosition() method is successful, it returns a coordinates object to the function specified in the parameter ( showPosition )
- The showPosition() function gets the displays the Latitude and Longitude
The example above is a very basic Geolocation script, with no error handling.
Handling Errors and Rejections
The second parameter of the getCurrentPosition() method is used to handle errors. It specifies a function to run if it fails to get the user’s location:
Example
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML = “User denied the request for Geolocation.”
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML = “Location information is unavailable.”
break;
case error.TIMEOUT:
x.innerHTML = “The request to get user location timed out.”
break;
case error.UNKNOWN_ERROR:
x.innerHTML = “An unknown error occurred.”
break;
}
}
Error Codes:
- Permission denied – The user did not allow Geolocation
- Position unavailable – It is not possible to get the current location
- Timeout – The operation timed out
Displaying the Result in a Map
To display the result in a map, you need access to a map service that can use latitude and longitude, like Google Maps:
Example
{
var latlon = position.coords.latitude + “,” + position.coords.longitude;
var img_url = “http://maps.googleapis.com/maps/api/staticmap?center=”
+latlon+”&zoom=14&size=400×300&sensor=false”;
document.getElementById(“mapholder”).innerHTML = “<img src='”+img_url+”‘>”;
}
In the example above we use the returned latitude and longitude data to show the location in a Google map (using a static image).
Google Map Script
How to use a script to show an interactive map with a marker, zoom and drag options.
Location-specific Information
This page demonstrated how to show a user’s position on a map. However, Geolocation is also very useful for location-specific information.
Examples:
- Up-to-date local information
- Showing Points-of-interest near the user
- Turn-by-turn navigation (GPS)
The getCurrentPosition() Method – Return Data
The getCurrentPosition() method returns an object if it is successful. The latitude, longitude and accuracy properties are always returned. The other properties below are returned if available.
Property | Description |
---|---|
coords.latitude | The latitude as a decimal number |
coords.longitude | The longitude as a decimal number |
coords.accuracy | The accuracy of position |
coords.altitude | The altitude in meters above the mean sea level |
coords.altitudeAccuracy | The altitude accuracy of position |
coords.heading | The heading as degrees clockwise from North |
coords.speed | The speed in meters per second |
timestamp | The date/time of the response |
Geolocation object – Other interesting Methods
watchPosition() – Returns the current position of the user and continues to return updated position as the user moves (like the GPS in a car).
clearWatch() – Stops the watchPosition() method.
The example below shows the watchPosition() method. You need an accurate GPS device to test this (like iPhone):
Example
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML = “Geolocation is not supported by this browser.”;}
}
function showPosition(position)
{
x.innerHTML = “Latitude: ” + position.coords.latitude +
“
Longitude: ” + position.coords.longitude;
}