Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получение latLong из API геокодирования Google

Автор вопроса: luckysing_noobsterОтветов: 1

Я пытаюсь использовать Google Geocoding API, чтобы получить широту и долготу из адреса. Я хочу сохранить координаты внутри переменной, чтобы использовать их позже. Я знаю, что это асинхронный вызов. В приведенном ниже коде я пытаюсь использовать функция useCordinates для назначения координат глобальной переменной, чтобы я мог использовать ее позже. Но я получаю координаты, не определены при отладке. Я новичок в javascript. Я где-то читал, что подразумеваемые глобальные переменные не должны быть определенный.

myGlobalVar = 'Привет, мир'; Спасибо за помощь.

 function codeAddress(address){
  var loc=[];
  geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
     // no need to define it in outer function now
    loc[0]=results[0].geometry.location.lat();
    loc[1]=results[0].geometry.location.lng();

    useCordinates( loc );

  } else {
    alert("Geocode was not successful for the following reason: " + status);
  }
});
}

function useCordinates(cordinateArray){
 cordinates= cordinateArray;
  }
functionTestCodeAddress(){
 start = document.getElementById('start').value;
 codeAddress(start);
 //assign the global variable 'cordinates'
 document.getElementById('start').value=cordinates;
}

javascriptgoogle-maps-api-3global-variablesgoogle-geocoder

Ответы

Ответ 1 · рейтинг 2 · Dr.Molle

Проблема не в переменной, проблема в том, когда вы пытаетесь получить доступ к переменной.

В настоящее время вы делаете это внутри TestCodeAddress() сразу после вызова codeAddress(), это слишком рано, потому что асинхронный запрос еще не завершен.

Вы можете, например. переместите эту строку:

document.getElementById('start').value=cordinates;

в useCordinates()

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы