我正在尝试向Google地图进行异步调用,以获取foreach循环内的地址。
这是功能:
//Function to get address from geographic coordinates
function getAddress(item) {
var address = 'Not fetched';
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude));
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
address = results[0].formatted_address;
});
return address;
}
这是循环:
recreateMarkers: function (self, data) {
data.vehicleInfo.forEach(function (item) {
self.Location= getAddress(item);
});
}
数据结构: 1. VehicleId 2.纬度 3.经度 4.位置
现在问题是它给了我所有车辆相同或未定义的位置。
如果有人可以提供帮助,我们会很高兴。
答案 0 :(得分:0)
以下是异步问题,
return address
在address = results[0].formatted_address;
分配Google获取地址之前执行,因此您的功能应该是这样的
function getAddress(item) {
var address = 'Not fetched';
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude));
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
address = results[0].formatted_address;
return address; //<= this statement should be here
});
// Note return address; should not be here
}