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

Я пытаюсь использовать 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; 
}

person luckysing_noobster    schedule 26.09.2012    source источник


Ответы (1)


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

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

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

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

в useCordinates()

person Dr.Molle    schedule 26.09.2012