вызов Google Maps в пределах цикла For Loop не возвращает расстояние - PullRequest
0 голосов
/ 20 апреля 2010

Я вызываю карты Google в цикле for в моем javascript, так как у меня есть несколько маршрутов, которые нужно отдельно оценивать в зависимости от расстояния.

Все отлично работает, за исключением того, что расстояние возвращается только для одного из маршрутов.

У меня такое ощущение, что это как-то связано с тем, как я объявляю предметы в вызове ajax для карт. Любые идеи, что может быть проблемой из кода ниже?

for (var i = 1; i <= numJourneys; i++) {
                var mapContainer = 'directionsMap' + i;
                var directionContainer = $('#getDistance' + i);

                $.ajax({
                    async: false,
                    type: "POST",
                    url: "Journey/LoadWayPoints",
                    data: "{'args': '" + i + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        if (msg.d != '[]') {
                            var map = new GMap2(document.getElementById(mapContainer));
                            var distance = directionContainer;
                            var wp = new Array();

                            //routes
                            var counter = 0;
                            $.each(content, function () {
                                wp[counter] = new GLatLng(this['Lat'], this['Long']);
                                counter = counter + 1;
                            });

                            map.clearOverlays();
                            map.setCenter(wp[0], 14);

                            // load directions
                            directions = new GDirections(map);
                            GEvent.addListener(directions, "load", function () {
                                alert(directions.getDistance());
                                //directionContainer.html(directions.getDistance().html);
                            });
                            directions.loadFromWaypoints(wp, { getSteps: true });
                        }
                    }
                });
            }

1 Ответ

0 голосов
/ 20 апреля 2010

Проблема связана с необъявленной переменной. Непосредственно перед вызовом GEvent существует переменная под названием 'directions', но она никогда не была объявлена ​​с помощью var, поэтому она не была очищена

var directions = new GDirections(map);

Выполнение вышесказанного сработало для меня.

...