javascript - 使用 javascript 异步调用 google 服务

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

这里发生的情况是,由于调用需要一些时间,来自调用的值不会发送到正确的 schoollat​​[i]。

最佳答案

您可以使用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 .

关于javascript - 使用 javascript 异步调用 google 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985953/

相关文章:

JavaScript: `new RegExp(' hi' )` versus ` RegExp ('hi' )`?

javascript - 将纬度、经度转换为 iframe 链接

javascript - 圆形仪表,指示器(使用 donut 代替温度计样式)

api - 超出 API 配额——后果?

parsing - 理解 Google Geocoding API 结果

python-3.x - 对于这种特殊情况,如何使用地理编码获得公司的正确位置? (Python、谷歌 API)

android - android 示例中的反向地理编码器不起作用

c# - 如何使用 WebBrowser 控件获取 JavaScript 堆栈跟踪?

javascript - 如何使用编辑窗口编辑表格中的行