0

私は次のようにグーグルマップの道順サービスを使用しています:

directionsDisplay = new google.maps.DirectionsRenderer();

var directionsService = new google.maps.DirectionsService();

var start = arrObjLatLngs[0];
var end = arrObjLatLngs[arrObjLatLngs.length - 1];

arrObjWaypoints = [];

// Get waypoints
if (arrObjLatLngs.length > 2) {

    for (var i = 0; i < arrObjLatLngs.length; i++) {

        arrObjWaypoints.push({
            location:arrObjLatLngs[i],
            stopover:true}
        );  

    }

}

var request = {
    origin:start,
    destination:end,
    travelMode: google.maps.DirectionsTravelMode.DRIVING,
    unitSystem: google.maps.DirectionsUnitSystem.METRIC,
    provideRouteAlternatives: false,
    waypoints: arrObjWaypoints
};

directionsService.route(request, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

        if (boolShowMap) {

            directionsDisplay.setMap(MapObject);
            $('#cp-div-map').dialog('open');
            google.maps.event.trigger(MapObject, 'resize');
            directionsDisplay.setDirections(response);

        } else {

            var total_distance = 0;

            // Add up distance of all available legs
            for (var i = 0; i < response.routes[0].legs.length; i++) {

                total_distance += parseInt(response.routes[0].legs[i].distance.value);

            }

            callBack(total_distance);

        }

    }

});

基本的に、最初のビットはとの間の距離を取得するのに問題startありendません...ただし、との間の距離を計算するための別の値baseと、とstartの間の3番目の距離も必要です。baseend

私はこれを試しました:-

var directionsServicePickup = new google.maps.DirectionsService();

var base = "52.781048888889, -1.2110222222222546";

var request2 = {
    origin:base,
    destination:start,
    travelMode: google.maps.DirectionsTravelMode.DRIVING,
    unitSystem: google.maps.DirectionsUnitSystem.METRIC,
    provideRouteAlternatives: false,
    waypoints: arrObjWaypoints
};


directionsServicePickup.route(request2, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

            var total_pickup_distance = 0;

            // Add up distance of all available legs
            for (var i = 0; i < response.routes[0].legs.length; i++) {

                total_pickup_distance += parseInt(response.routes[0].legs[i].distance.value);

            }

            var km = parseInt(total_pickup_distance) / 1000;

            // Convert KM into Miles
            var pickup_distance = parseInt((km / 8) * 5);

            alert('Pickup='+pickup_distance);

            var runin_pickup = 1200;

            // Send to our checkRuninTariff function
            checkRuninTariff(runin_pickup);

        }

});

しかし、これは私が送信している最初のリクエストを無効にしているようです。私はこのAPIにあまり詳しくないので、これに関するヘルプをいただければ幸いです。

4

1 に答える 1

1

場所間の距離(方向ではない)が必要な場合は、DistanceMatrixを使用してください

1回の通話で複数の場所間の走行距離を計算します。

ドキュメントからの例

于 2013-03-14T13:38:10.327 に答える