Usando uma função de retorno de chamada com o Google Geocode

Eu tenho lutado com isso por algumas horas agora, e mesmo depois de ler vários exemplos no Stack, eu não consegui fazer isso funcionar. Não ajuda que eu seja um novato em JS.

Estou tentando recuperar informações sobre um endereço da Google Geocoder API e depois passar o objeto para outra função. Por minha leitura eu entendo que a função que estou usando para recuperar a informação é assíncrona e, portanto, eu preciso usar uma função de retorno de chamada para lê-lo. No entanto, quando tento fazer isso, ainda fico "indefinido" retornado pelo meu console. Eu sei que a informação está vindo do Google, já que quando eu uso o console.log () no objeto de resultado ele retorna corretamente.

De qualquer forma, aqui está o que estou trabalhando:

function onSuccess(position) {
  getLocationData(position, function(locationData) {
    console.log(locationData);
  });   
}

function getLocationData(position, callback) {
  geocoder = new google.maps.Geocoder();
  var location = 'Billings,MT';

  if( geocoder ) {
    geocoder.geocode({ 'address': location }, function (results, status) {
      if( status == google.maps.GeocoderStatus.OK ) {
        return results[0];
      }
    });
  }
  callback();
}

Como eu mencionei, tudo o que consigo é "indefinido". Se eu colocar 'console.log (results [0])' acima do retorno getLocationData (), o objeto retornado está correto. Qualquer ajuda seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion