var request = {
origin: "34.040531,-118.255403",
destination: "34.040531,-118.255403",
waypoints: [{ location: "48.182379, -117.042542", stopover: true },
{ location: "38.657527,-120.972854", stopover: true }],
travelMode: google.maps.DirectionsTravelMode.DRIVING,
optimizeWaypoints: true,
};
它提供了错误的路径:
"34.040531,-118.255403" -> "48.182379, -117.042542" -> "38.657527,-120.972854" -> "34.040531,-118.255403"
Miles:- 2152 miles
Attached image for incorrect path!
但优化路线应
"34.040531,-118.255403" -> "38.657527,-120.972854" -> "48.182379, -117.042542" -> "34.040531,-118.255403"
Miles: 1307 miles
计算里程数? (根据建议,我已经添加了这个问题
Miles是根据Google API响应计算的
Google提供长途(2152)
A:“34.040531,-118.255403”#110 E 9th St,Los Angeles,CA
B:“48.182379,-117.042542”#235 N. Union Ave,Newport,WA
C:“38.657527,-120.972854”#3300 Coach Lane,Cameron Park,CA
答:“34.040531,-118.255403”#110 E 9th St,洛杉矶,加利福尼亚州
优化路线应为(1307)
答:“34.040531,-118.255403”#110 E 9th St,Los Angeles,CA
B:“38.657527,-120.972854”#3300 Coach Lane,Cameron Park,CA
C:“48.182379,-117.042542”#235 N. Union Ave,Newport,WA
答:“34.040531,-118.255403”#110 E 9th St,洛杉矶,加利福尼亚州
答案 0 :(得分:2)
所以这就是发生的事情。您计划的旅程是往返旅程,从A点开始和结束。
如果您选择'优化',那么您将选择A - > B - > C - >甲
如果您选择“未优化”,那么您将选择A - > C - > B - >甲
这些之间的距离如下:
添加这三个距离,总共可以得到2557英里,即总往返行程的距离,无论您在旅程的哪个方向,优化或未优化。
你在代码中循环这样:
for (i = 0; i <= response.routes[0].legs.length - 2; i++) {
var route = response.routes[0];
var d = route.legs[i].distance.text;
totalmiles = totalmiles + roundNumber(parseFloat((d.split(" ")[0]).replace(",", "")), 2);
document.getElementById('TotalMiles').innerHTML = totalmiles + " miles";
}
注意你正在循环到长度为2。你在4点之间旅行,因此你有3条腿可以旅行。但是在计算你正在循环0..1的距离时,你是故意(我假设?)不计算最后一条腿回到最终目的地。
所以你要像这样计算距离:
因此,不计算从倒数第二站到最终目的地的腿,这解释了行程长度的差异。
将你的循环更改为这样,所以你也计算了旅程的最后一段:
for (i = 0; i < response.routes[0].legs.length; i++) {
我无法让它更清楚。