我有一个数组
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:
关于javascript - 使用 javascript 异步调用 google 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15985953/