代码之家  ›  专栏  ›  技术社区  ›  Richard Reddy

google地图在for循环内调用而不返回距离

  •  0
  • Richard Reddy  · 技术社区  · 16 年前

    我在javascript中用for循环调用google地图,因为我有多条路线需要根据距离分别计算成本。

    一切都很好,只是只有一条路线能返回距离。

    我感觉这与我在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 回复  |  直到 16 年前
        1
  •  0
  •   Richard Reddy    16 年前

    这个问题是由一个未声明的变量引起的。就在gevent调用之前,有一个名为'directions'的变量,但它实际上从未用var声明过,因此没有被清除。

    var directions = new GDirections(map);
    

    做上述工作对我很有帮助。