Перейти к содержанию

Widget:Geocoder

Материал из Город на ладошках

<script> function initGeocoder() {

   var addressInput = document.querySelector('input[name="address"]');
   var latField = document.querySelector('input[name="lat"]');
   var lonField = document.querySelector('input[name="lon"]');
   var geocodeButton = document.getElementById('geocode-button');
   
   if (!addressInput || !latField || !lonField || !geocodeButton) {
       console.log('Поля не найдены');
       return;
   }
   
   geocodeButton.addEventListener('click', function() {
       var address = addressInput.value;
       if (!address) {
           alert('Введите адрес');
           return;
       }
       
       var ymapsApiKey = '16841d22-e258-4ddd-9b6c-822c69f4bcc4';
       var url = 'https://geocode-maps.yandex.ru/1.x/?apikey=' + ymapsApiKey + '&geocode=' + encodeURIComponent(address) + '&format=json';
       
       fetch(url)
           .then(response => response.json())
           .then(data => {
               var geoObject = data.response.GeoObjectCollection.featureMember[0];
               if (geoObject) {
                   var coordinates = geoObject.GeoObject.Point.pos.split(' ');
                   lonField.value = coordinates[0];
                   latField.value = coordinates[1];
                   alert('Координаты найдены!');
               } else {
                   alert('Адрес не найден');
               }
           })
           .catch(error => {
               console.error(error);
               alert('Ошибка');
           });
   });

}

if (document.readyState === 'loading') {

   document.addEventListener('DOMContentLoaded', initGeocoder);

} else {

   initGeocoder();

} </script>