HTML Geolocation API

    HTML Geolocation API

    In HTML5 W3C introduce a new API to detect the user location; however, it is on the user whether to allow or dismiss this feature. With this API, we can detect the current geographical position of the user. The Geolocation API only works with secure websites such as HTTPS, if your website is hosted on a non-secure origin with HTTP request then this API will not work.

    HTML Geolocation

    This is an HTML API and its code written in JavaScript. So to use this API, we need to write the JavaScript code. The getCurrentPosition() method can return the current position of the user, and this method works more accurately when the device has a GPS.

    Example

    <!DOCTYPE html>
    <html>
    <body>
    
     <p>Click to Get Your Geographical Coordinates</p>
    
     <button onclick="getCoordinates()">Try It</button>
    
     <i id="print"></i>
    
     <script>
       var c = document.getElementById("print");
    
       function getCoordinates() {
         if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showcoordinates);
             } 
         else { 
            c.innerHTML = "Browser Does Not Support Geographical API";  
             }
         }
    
        function showcoordinates(position) {
            c.innerHTML = "<br>Latitude: " + position.coords.latitude + 
            "<br>Longitude: " + position.coords.longitude;
           }
       </script>
    
    </body>
    </html>

    Geolocation Error Handling and Rejections

    getCurrentPosition() method can accept two parameters. The first parameter is the function for showing coordinates, and the second parameter handle errors. The second parameter is a function that runs if the browser fails to get the current location of the user's.

    navigator.geolocation.getCurrentPosition(showcoordinates, showError);
    
    function showError(error) 
    
    {
        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;
    }

    Show the coordinates on a Map

    Once we get the user coordinates using the getCurrentPosition() method we can use the map services provided by Google and Apple and display the coordinates on the map.

    function showPosition(position) {
      var latlon = position.coords.latitude + "," + position.coords.longitude;
    
      var img_url = "https://maps.googleapis.com/maps/api/staticmap?center=
      "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_KEY";
    
      document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
    }

    getCurrentPosition() Method Return Data

    The getCurrentPosition() method return an object, and using that object we can access the various properties associated with it.

    getCurrentPositon() Property Returns
    cor.latitude Return the latitude coordinate
    cor.longitude Return the longitude coordinate
    cor.accuracy It returns the accuracy of the position
    cor.altitude It returns the altitude level above the sea level.
    cor.altitudeAccuracy It returns the accuracy of the altitude.
    cor.heading It returns the clockwise degree from the north.
    cor.speed It returns the speed in meter/second
    timestamp. It returns the date and time.

    Summary

    • In HTML5, we have an API to get the user's current location.
    • The location can only be accessed if the user allow the permission.
    • The API is written in JavaScript.