0

我在我的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 });
                        }
                    }
                });
            }
4

1 回答 1

0

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

var directions = new GDirections(map);

执行上述操作对我有用。

于 2010-04-20T09:10:05.057 回答