2010-04-19 49 views
0

我打电话给谷歌地图内for循环在我的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 }); 
         } 
        } 
       }); 
      } 

回答

0

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

var directions = new GDirections(map); 

这样做对我有效。