2010-04-19 47 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); 

這樣做對我有效。