gmaps.js 返回 getRoutes 的旧值

gmaps.js returning old value for getRoutes

如果有多条腿,则每条腿报告的距离相同。知道为什么吗?它报告前两条腿之间的距离正确,但随后每条腿之间的距离与第一条腿相同。可能此时咖啡因摄入过多,但我不明白为什么。

代码如下:

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);

    }
});
}

抱歉浪费大家的时间。显然这是一个已知的、未修复的错误 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);
  }