Как мне заполнить два поля формы - одно с координатами, другое с адресом - используя HERE API? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь реализовать кнопку, которая при нажатии возвращает адрес, к которому пользователь ближе всего, и заполняет поле формы этими данными.До сих пор я мог использовать API геолокации HTML и возвращать текущие координаты пользователя в поле формы.Итак, я хотел бы добавить к этому обратное геокодирование этих координат в адрес улицы и возврат в другое поле формы.Я пытаюсь использовать HERE API для решения обратной проблемы геокодирования, но, как я уже сказал, я отстой в JS и не знаю, как должен выглядеть код.

Код, который яесть для возврата координат пользователя здесь и работает нормально:

window.onload = function() {
    var currentLocation = document.getElementById('coordinatesStore');
    document.querySelector('.add-button').addEventListener('click', () => {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(({
                coords: {
                    latitude,
                    longitude
                }
            }) => {
                currentLocation.value = latitude + ", " + longitude;
            });
        } else {
            currentLocation.value = "Geolocation is not supported by this browser.";
        }
    });
}

Код для обратного геокодирования координат из примера в API документация ниже, но я не могу понять, какинтегрировать два:

var platform = new H.service.Platform({
    app_id: 'blahblahblah',
    app_code: 'rararararararr'
});

function reverseGeocode(platform) {
  var geocoder = platform.getGeocodingService(),
    parameters = {
      prox: latitude + ", " + longitude,
      mode: 'retrieveAddresses',
      maxresults: '1'};

  geocoder.reverseGeocode(parameters,
    function (result) {
      alert(result);
    }, function (error) {
      alert(error);
    });
}

1 Ответ

0 голосов
/ 17 мая 2019

Ниже приведен пример. Дайте знать, если у вас появятся вопросы.

async function getLongLat() {
  //adding promise just for safe side to get it resolve first
  return new Promise((resolve, reject) => {
    let longitude = 'a',
        latitude = 'b'
    resolve( {
      longitude,
      latitude
    });   
  });
}

async function reverseGeocode(platform) {
  //var geocoder = platform.getGeocodingService(),
  try {
    const {latitude, longitude} = await getLongLat();
    console.log(latitude, longitude);
  }catch(err){
    //here error is getLongLat reject for any XYZ reason
  }
  
}

reverseGeocode()
...