Não é possível obter dados de geocodificação dos gmaps

Eu tenho um campo oculto dentro de um formulário:

<form> 
     <input id="distance" name="km" type="hidden">
</form>

E eu só quero preencher esse campo com a distância entre 2 endereços, escolhidos pelo usuário. Depois, basta enviá-lo com o formulário e fazer as coisas do servidor com ele. Aqui eu chamo decalculateDistance func:

$('#my_form_id').on("submit", function (e) {
    calculateDistance();
    // other stuff
    return true;
});

É assim que estou tentando obter a distância:

function calculateDistance() {
    var startPoint = $('#main_from_route_input').val();
    var endPoint = $('#main_to_route_input').val();
    var geocoderStart = new google.maps.Geocoder();
    var geocoderEnd = new google.maps.Geocoder();
    var coordsStart, coordsEnd;

geocoderStart.geocode({'address': startPoint}, function (response, status) {
    if(status != google.maps.GeocoderStatus.OK){
        alert('Geocode of first address failed: ' + status);
    }
    coordsStart = response[0].geometry.location;

    geocoderEnd.geocode({'address': endPoint}, function (response, status) {
        if(status != google.maps.GeocoderStatus.OK){
            alert('Geocode of second address failed: ' + status);
        }
        coordsEnd = response[0].geometry.location;
        var distance = (google.maps.geometry.spherical.computeDistanceBetween(coordsStart, coordsEnd) / 1000).toFixed(2);
        $('#distance').val(distance);
    });
});
}

Eu vim com a solução superior. Mas eu nem entro nas funções de retorno de chamada. Quando depuro e chego ao retorno de chamada, ele é ignorado. O código parece estar correto (o mesmo que em outras respostas). Onde está o problema?

Eu recebo os valores dos endereços como'Copenhagen, Denmark' e'Berlin, Germany', por exemplo. Tentei fazê-lo como nas sugestões de trechos de código do google, da seguinte maneira:'Copenhagen,+Denmark' (o espaço vazio é substituído por um+), mas ainda não funciona.

questionAnswers(1)

yourAnswerToTheQuestion