我有以下地理编码异步方法,它按预期工作,从我拥有的自定义对象数组中获取地址,我的问题是将结果映射回触发该方法的对象 [i],查看结果只会给我返回与我输入的地址不同的格式化地址,“Google 添加了一些区号,将 St 更改为街道等。” 因此,当我得到这些结果时,由于此方法的异步性质,我无法匹配我获得的每个对象的新 Lat 和 Lng 坐标,并且结果不会按顺序返回,知道我可以在这里做什么吗?
谢谢。
编辑:我的想法是创建一种方法来按顺序恢复结果,将其更改为同步,我知道不理想,我找不到任何示例。
函数 iterateAndAddress(objArray) {
for(var i=0; i< objArray.length; i++) {
var address = objArray[i].BillingStreet +' '+objArray[i].BillingCity+' '+objArray[i].BillingCountry;
var geocoder = new google.maps.Geocoder();
console.log('Address = '+address);
if(geocoder) {
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//console.log(results);
var lat = results[0].geometry.location.lat();
var lon = results[0].geometry.location.lng();
console.log('Address : '+results[0].formatted_address);
}else if(status == 'OVER_QUERY_LIMIT') {
}
else{
}
});
}
}
}