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......但是,我还需要一个单独的值来计算和之间的距离basestart第三个距离之间base的距离end

我试过这个: -

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

它将在一次呼叫中计算多个位置之间的行驶距离。

文档中的示例

于 2013-03-14T13:38:10.327 回答