私は次のようにグーグルマップの道順サービスを使用しています:
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番目の距離も必要です。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にあまり詳しくないので、これに関するヘルプをいただければ幸いです。