How to get longitude and latitude from the address

I want to display longitude and latitude in a input field using the address that user will enter. I searched a lot and found some solutions that work when i run them in local server and when i include that code in my project then it will not work. I am using Directory+ theme. This theme has feature to display map and it gives me an error

You have included the Google Maps API multiple times on this page. This may cause unexpected errors.

Read More

Here is my code

var placeSearch, autocomplete;
var componentForm = {
  street_number: 'short_name',
  route: 'long_name',
  locality: 'long_name',
  administrative_area_level_1: 'short_name',
  country: 'long_name',
  postal_code: 'short_name'
};

function initAutocomplete() {
  // Create the autocomplete object, restricting the search to geographical
 // location types.
 autocomplete = new google.maps.places.Autocomplete(
  /** @type {!HTMLInputElement} */
 (document.getElementById('autocomplete')),
  { types: ['geocode'] });

   // When the user selects an address from the dropdown, populate the address
   // fields in the form.
   autocomplete.addListener('place_changed', fillInAddress);
}

  // [START region_fillform]
function fillInAddress() {
  // Get the place details from the autocomplete object.
  var place = autocomplete.getPlace();
   console.log(place);
   alert(place.geometry.location);
   for (var component in componentForm) {
   document.getElementById(component).value = '';
   document.getElementById(component).disabled = false;
}

 // Get each component of the address from the place details
 // and fill the corresponding field on the form.
 for (var i = 0; i < place.address_components.length; i++) {
   var addressType = place.address_components[i].types[0];
   if (componentForm[addressType]) {
    var val = place.address_components[i][componentForm[addressType]];
    document.getElementById(addressType).value = val;
   }
  }
}
// [END region_fillform]

// [START region_geolocation]
// Bias the autocomplete object to the user's geographical location,
// as supplied by the browser's 'navigator.geolocation' object.
function geolocate() {
  if (navigator.geolocation) {
     navigator.geolocation.getCurrentPosition(function(position) {
     var geolocation = {
       lat: position.coords.latitude,
       lng: position.coords.longitude
     };
     var circle = new google.maps.Circle({
       center: geolocation,
      radius: position.coords.accuracy
    });
    autocomplete.setBounds(circle.getBounds());
   });
 }
}
// [END region_geolocation]

</script>
<script src="https://maps.googleapis.com/maps/api/js?signed_in=true&libraries=places&callback=initAutocomplete"
    async defer></script>

kindly tell me where I am wrong.

Related posts

1 comment

  1. I found the fix. It was the issue with theme’s google map. To fix it, i called my javascript code after get_footer(); and its working fine.

Comments are closed.