How to get city name by using geolocation ?

In this article, we will learn how to get the city name of the user using reverse geocoding. We will be using a 3rd party API service provider(Location IQ) to help us to convert the latitude and longitude we receive into an address.

Steps:

  1. Get user coordinates.
  2. Get city name.

Note: A LocationIQ account needs to get an API token.



index.html Getting user coordinates.

  • The Geolocation interface allows us to obtain the position of the user’s device.
  • Geolocation.getCurrentPosition() helps us to determine the user’s location and gives back a Geoposition object with the required data.

index.html

filter_none

edit
close

play_arrow

link
brightness_4
code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0">
    <title>Geolocation - City</title>
</head>
<body>
    <script src="script.js" ></script>
    </body>
</html>

chevron_right


The JavaScript file contains two functions, getCoordinates() & getCity()

  1. getCoordinates() Function:
    • The Geolocation interface allows us to obtain the position of the users device.
    • Geolocation.getCurrentPosition() helps us to determine user’s location and gives back a Geoposition object with required data.
    • Refer this link for complete info on Geolocation using JS.
  2. getCity() Function:
    • We need a LocationIQ token to proceed.
    • XMLHttpRequest (XHR) is an API object whose methods lets us transfer data between a web browser and a web server.
    • Despite the name, it can be used along with HTTP and other protocols as well. And the data to be retrieved can be not just XML but also JSON, HTML or plain text.
    • xhr.readyState == 4 && xhr.status == 200 indicates that the data is received and loaded properly.
    • Since the data we receive is a JSON object, we can use dot notation to get the value of the attributes.

script.js

filter_none

edit
close

play_arrow

link
brightness_4
code

// Step 1: Get user coordinates
function getCoordintes() {
    var options = {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 0
    };
  
    function success(pos) {
        var crd = pos.coords;
        var lat = crd.latitude.toString();
        var lng = crd.longitude.toString();
        var coordinates = [lat, lng];
        console.log(`Latitude: ${lat}, Longitude: ${lng}`);
        getCity(coordinates);
        return;
  
    }
  
    function error(err) {
        console.warn(`ERROR(${err.code}): ${err.message}`);
    }
  
    navigator.geolocation.getCurrentPosition(success, error, options);
}
  
// Step 2: Get city name
function getCity(coordinates) {
    var xhr = new XMLHttpRequest();
    var lat = coordinates[0];
    var lng = coordinates[1];
  
    // Paste your LocationIQ token below.
    xhr.open('GET', "
    lat + "&lon=" + lng + "&format=json", true);
    xhr.send();
    xhr.onreadystatechange = processRequest;
    xhr.addEventListener("readystatechange", processRequest, false);
  
    function processRequest(e) {
        if (xhr.readyState == 4 && xhr.status == 200) {
            var response = JSON.parse(xhr.responseText);
            var city = response.address.city;
            console.log(city);
            return;
        }
    }
}
  
getCoordintes();

chevron_right


Output:

full-stack-img




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.