gmaps.js为getRoutes返回旧值

时间:2016-03-24 13:05:30

标签: javascript jquery google-maps maps gmaps.js

如果有多条腿,则每条腿报告的距离是相同的。知道为什么吗?它报告前两条腿之间的距离,但是每条腿之间的距离与第一条腿的距离相同。可能只是过度咖啡因,但我不明白为什么。

以下是代码:

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

    }
});
}

1 个答案:

答案 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);
  }