2013-04-13 120 views
0

谷歌服務,我有一個數組異步調用使用JavaScript

SchoolAddress[0] = Abelsvej 98, 4100, Ringsted; 
SchoolAddress[1] = Prstevej 19, 4100, Ringsted; 
SchoolAddress[2] = Haraldsvej 77, 4100, Ringsted; 

我得緯度經度&此地址。

我爲此使用了Google地理編碼器。

for (var i = 0; i < schools.length; i++) 
{ 
    var address = schools[i][1]; 
    var geocoder = new google.maps.Geocoder(); 
    geocoder.geocode({ 'address': address }, function (results, status) 
    { 
     var location = results[0].geometry.location; 
     schoolslat[i] = location.lat() + ', ' + location.lng(); 
    }); 
} 

這裏發生的事情是因爲通話需要一些時間,來自通話的值不會去正確的schoolslat [i]。

回答

3

您可以使用您的要求closure凍結變量i

for (var i = 0; i < schools.length; i++) 
{ 
    (function(i){ 
     var address = schools[i]; 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'address': address }, function (results, status) 
     { 
      var location = results[0].geometry.location; 
      schoolslat[i] = location.lat() + ', ' + location.lng(); 
     }); 
    }(i)); 
} 

UPD

JSFiddle example

+0

它不工作,仍然發生同樣的事 –

+0

你可以提供'學校'的數組內容? – fedosov

+0

請檢查出更新中的JSFiddle示例。 – fedosov