异步使用javascript调用google服务

时间:2013-04-13 08:45:21

标签: javascript google-geocoder

我有一个数组

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

我必须得到纬度和这个地址的经度。

我正在使用谷歌地理编码器。

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();
    });
} 

这里发生的事情是,由于呼叫需要一些时间,来自呼叫的值不会转到正确的学校[i]。

1 个答案:

答案 0 :(得分: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