0

距離に基づいて個別にコストをかける必要がある複数のルートがあるため、JavaScriptのforループ内でGoogleマップを呼び出しています。

距離がルートの1つに対してのみ返されることを除いて、すべてがうまく機能します。

これは、マップの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 に答える