如果有多条腿,则每条腿报告的距离是相同的。知道为什么吗?它报告前两条腿之间的距离,但是每条腿之间的距离与第一条腿的距离相同。可能只是过度咖啡因,但我不明白为什么。
以下是代码:
function marker(map, lat, lng, title, name) {
map.addMarker({
lat: lat,
lng: lng,
title: title,
click: function (e) {
legs.push({destination: name, latitude: lat, longitude: lng, distance: null, time: null});
var next_stop;
if (legs.length > 1)
{
$.each(legs, function (index, value)
{
// Mileage In Between
if (legs[(index + 1)])
{
next_stop = legs[(index + 1)];
map.getRoutes(
{
origin: [value.latitude, value.longitude],
destination: [next_stop.latitude, next_stop.longitude],
callback: function (e)
{
var time = 0;
var distance = 0;
for (var i=0; i<e[0].legs.length; i++)
{
time += e[0].legs[i].duration.value;
distance += e[0].legs[i].distance.value;
}
var miles = distance/1609.34;
var kilometers = distance/1000;
var timer = time/60;
legs[(index + 1)].distance = miles.toFixed(2);
alert(timer.toFixed(2) + " and " + miles.toFixed(2));
}
}
);
}
}
);
}
console.log(legs);
a.$set('stops', legs);
}
});
}
答案 0 :(得分:1)
很抱歉浪费你的时间。显然,这是一个已知的,未修复的gmap.js错误:
https://github.com/hpneo/gmaps/issues/373
修复方法是在gmaps.js中找到此代码:
if (options.callback) {
options.callback(self.routes, result, status);
}
并将其替换为:
if (options.callback) {
options.callback(result.routes, result, status);
}