diff --git a/js/geolocation-common-map.js b/js/geolocation-common-map.js
index d16f7b6..3d941aa 100644
--- a/js/geolocation-common-map.js
+++ b/js/geolocation-common-map.js
@@ -287,12 +287,14 @@
             navigator.geolocation.getCurrentPosition(function (position) {
               map.data('centre-lat', position.coords.latitude);
               map.data('centre-lng', position.coords.longitude);
-              googleMap.setCenter({
-                lat: position.coords.latitude,
-                lng: position.coords.longitude
-              });
+
+              var newLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
+
+              googleMap.setCenter(newLocation);
               googleMap.setZoom(parseInt(mapSettings.settings.google_map_settings.zoom));
 
+              Drupal.geolocation.drawAccuracyIndicator(newLocation, position.coords.accuracy, googleMap);
+
               if (
                 typeof mapSettings.client_location.update_map !== 'undefined'
                 && mapSettings.client_location.update_map === true
diff --git a/js/geolocation-google-maps-api.js b/js/geolocation-google-maps-api.js
index 4621a8c..ccf58f2 100644
--- a/js/geolocation-google-maps-api.js
+++ b/js/geolocation-google-maps-api.js
@@ -96,6 +96,8 @@
  * @property {Function} Marker.setMap
  * @property {Function} Marker.setIcon
  *
+ * @property {function(Object):Object} Circle
+ *
  * @property {Function} fitBounds
  *
  * @property {Function} setCenter
@@ -322,4 +324,47 @@
     }
   };
 
+  /**
+   * Draw a circle indicating accuracy and slowly fade it out.
+   *
+   * @param {GoogleMapLatLng} location - A location (latLng) object from google maps API.
+   * @param {int} accuracy - Accuracy in meter.
+   * @param {GoogleMap} map - Map to draw on.
+   */
+  Drupal.geolocation.drawAccuracyIndicator = function (location, accuracy, map) {
+
+    // Draw a circle representing the accuracy radius of HTML5 geolocation.
+    var circle = new google.maps.Circle({
+      center: location,
+      radius: accuracy,
+      map: map,
+      fillColor: '#4285F4',
+      fillOpacity: 0.5,
+      strokeColor: '#4285F4',
+      strokeOpacity: 1,
+      clickable: false
+    });
+
+    // Fade circle away.
+    setInterval(fadeCityCircles, 100);
+
+    function fadeCityCircles() {
+      var fillOpacity = circle.get('fillOpacity');
+      fillOpacity -= 0.02;
+
+      var strokeOpacity = circle.get('strokeOpacity');
+      strokeOpacity -= 0.04;
+
+      if (
+        strokeOpacity > 0
+        && fillOpacity > 0
+      ) {
+        circle.setOptions({fillOpacity: fillOpacity, strokeOpacity: strokeOpacity});
+      }
+      else {
+        circle.setMap(null);
+      }
+    }
+  };
+
 })(jQuery, _, Drupal, drupalSettings);
diff --git a/js/geolocation-widget-googlegeocoder.js b/js/geolocation-widget-googlegeocoder.js
index d3b6e2e..e654474 100644
--- a/js/geolocation-widget-googlegeocoder.js
+++ b/js/geolocation-widget-googlegeocoder.js
@@ -169,6 +169,12 @@
               map.lat = position.coords.latitude;
               map.lng = position.coords.longitude;
 
+              Drupal.geolocation.drawAccuracyIndicator(
+                new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
+                position.coords.accuracy,
+                map.googleMap
+              );
+
               // If requested, also use location as value.
               if (typeof (drupalSettings.geolocation.widgetSettings[widget_id].autoClientLocationMarker) != 'undefined') {
                 if (drupalSettings.geolocation.widgetSettings[widget_id].autoClientLocationMarker) {
@@ -297,6 +303,12 @@
             navigator.geolocation.getCurrentPosition(function (position) {
               var newLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
 
+              Drupal.geolocation.drawAccuracyIndicator(
+                newLocation,
+                position.coords.accuracy,
+                map.googleMap
+              );
+
               map.googleMap.setCenter(newLocation);
 
               Drupal.geolocation.geocoderWidget.locationCallback(newLocation, widget_id);
