이것은 조금 까다 롭습니다, 그게 지금 몇 시간 동안 있었어.구글지도 api 부정확 한 계산
양식이 중간 웨이 포인트와 함께 사용되는 경우 "거리"및 "비용"이 올바르게 계산됩니다. 어떻게하면 경유지가있는 경우 계산은 "시작"주소와 첫 번째 경유지 사이에서만 이루어집니다. 그것은 목적지와 다른 웨이 포인트를 완전히 무시합니다.
var inputs = document.getElementById('start');
var autocompletes = new google.maps.places.Autocomplete(inputs, options);
var inpute = document.getElementById('end');
var autocompletee = new google.maps.places.Autocomplete(inpute, options);
directionsDisplay = new google.maps.DirectionsRenderer();
var melbourne = new google.maps.LatLng(-31.953512, 115.857048);
var myOptions = {
zoom:12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: melbourne
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
}
function calcRoute() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
if (waypoints.value) {
var waypts = [];
var optionsArray = document.getElementById("waypoints").value.split('\n');
for (var i = 0; i < optionsArray.length; i++) {
if(optionsArray.length>0) {
waypts.push({
location:optionsArray[i],
stopover:true});
}
}
}
var distanceInput = document.getElementById("distance");
var costInput = document.getElementById("cost");
if (waypoints.value) {
var request = {
origin:start,
destination:end,
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
} else {
var request = {
origin:start,
destination:end,
optimizeWaypoints: true,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
}
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
distanceInput.value = response.routes[0].legs[0].distance.value/1000;
costInput.value = (2 * (response.routes[0].legs[0].distance.value/1000));
}
});
}
</script>
</head>
<body onload="initialize()">
<div>
<p>
<label for="start">Pickup from: </label>
<input type="text" name="start" id="start" autocomplete="on" size="40"/>
<label for="end">Delivered to: </label>
<input type="text" name="end" id="end" autocomplete="on" size="40"/><BR>
Other Deliveries:<BR>
<textarea id="waypoints" name="waypoints" onclick="this.value='';" cols="10" rows="10">Address, Suburb, State
(Address is Optional)
New line for each address</textarea>
</p>
<p>
<div id="ins"></div>
</p>
<p>
<input type="submit" value="Calculate" onclick="if (waypoints.value == 'Address, Suburb, State\n(Address is Optional)\nNew line for each address') { waypoints.value=''}; calcRoute()" />
</p>
<p>
<label for="distance">Distance (km): </label>
<input type="text" name="distance" id="distance" readonly="true" />
</p>
<p>
<label for="cost">MAX cost: 1 standard item going direct</label>
<input type="text" name="cost" id="cost" readonly="true"/>
</p>
</div>
<div id="map_canvas" style="width:300px; height:200px;"></div>
나는 알고 : distanceInput.value = response.routes [0] .legs [0] .distance.value/1000; costInput.value = (2 * (response.routes [0] .legs [0] .distance.value/1000)); 은 계산을합니다. 하지만 내가 함께 모은 것은 없습니다. 당신이 중간 점을 추가하는 경우
, 당신에게
중복 (http://stackoverflow.com/questions/28702077/adding-waypoints-to-로 계산되어야한다 google-distance-matrix-to-determined-mileage) – geocodezip