您好,我想尝试获得自由度&使用地理编码器的经度如下代码。
function getLatitudeLongitude(callback, address) {
geocoder = new google.maps.Geocoder();
if (geocoder) {
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0]);
}
});
}
}
我的API成功功能如下
var tempArr = [];
var posObj = {};
_.each(vm.result, function(data) {
var tempPosArr = [];
getLatitudeLongitude(function (result) {
var tempPosArr = [];
tempPosArr.push(result.geometry.location.lat());
tempPosArr.push(result.geometry.location.lng());
var posObj = {
pos : tempPosArr
};
positions.push(posObj);
}, data.location)
console.log(positions);
});
console.log(positions.length);
我已在全球范围内声明此位置变量。并且正在推动数据但是低于结果。
它获得了所有纬度,经度并且创建了Temp Obj,但是在外面,结果如图所示。
答案 0 :(得分:0)
是的,因为这个函数:getLatitudeLongitude可能从服务器获取数据,你需要使用Promise for this
前:
var tempArr = [];
var posObj = {};
var defer = $q.defer(); // inject the $q service to add defer
_.each(vm.result, function(data) {
var tempPosArr = [];
getLatitudeLongitude(function (result) {
var tempPosArr = [];
tempPosArr.push(result.geometry.location.lat());
tempPosArr.push(result.geometry.location.lng());
var posObj = {
pos : tempPosArr
};
positions.push(posObj);
defer.resolve(positions);// now you resolve the promise
}, data.location)
console.log(positions);
});
//console.log(positions.length);
// you can catch the promise here when it resolved
defer.promise.then(function(positions){
console.log(positions)
});