Kann keine Geokodierungsdaten für Google Maps erhalten

Ich habe ein verstecktes Feld in einem Formular:

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

Und ich möchte dieses Feld nur mit dem Abstand zwischen zwei vom Benutzer ausgewählten Adressen füllen. Dann reiche ich es einfach mit dem Formular ein und erledige das Server-Zeug damit. Hier nenne ich dascalculateDistance func:

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

So versuche ich, die Entfernung zu ermitteln:

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);
    });
});
}

Ich habe die obere Lösung gefunden. Aber ich komme nicht einmal in die Rückruffunktionen. Wenn ich debugge und zum Rückruf komme, wird er einfach übersprungen. Der Code scheint korrekt zu sein (der gleiche wie in anderen Antworten). Wo ist das Problem

Ich erhalte die Adresswerte als'Copenhagen, Denmark' und'Berlin, Germany', zum Beispiel. Ich habe versucht, es wie in Google Code Snipet-Vorschlägen wie folgt zu machen:'Copenhagen,+Denmark' (Leerzeichen wird durch ein @ erset+), funktioniert aber immer noch nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage