谷歌地图呼叫在一个For循环内没有返回距离

时间:2010-04-19 23:12:45

标签: ajax loops google-maps getdistance

我在javascript中的for循环中调用谷歌地图,因为我有多条路线需要根据距离单独计算。

除了仅为其中一条路线返回距离外,一切都很有效。

我觉得这与我在地图的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 :(得分:0)

问题归结为非声明变量。就在GEvent调用之前,有一个名为'directions'的变量,但实际上从未使用var声明它,因此它没有被清除。

var directions = new GDirections(map);

上述操作对我有用。