【发布时间】:2013-09-27 07:44:18
【问题描述】:
我正在尝试创建一个使用谷歌地图地理编码器的角度服务,但是我发现来自谷歌的回调是在执行服务函数之后执行的。
控制器
app.controller( 'AppCtrl',['geocoder',function AppCtrl (geocoder) {
var result=geocoder.geocode('greek');
console.log(result);
});
服务
app.service('geocoder',function() {
this.geocode=function(address) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results);
return results;
} else {
return ('Geocode was not successful for the following reason: ' + status);
}
});
};
});
问题是,控制器中的console.log(result) 输出未定义,服务中的console.log(results) 在调用函数后从google 获取结果。也就是回调函数没有及时返回结果。
有没有办法解决这个问题? 谢谢。
【问题讨论】:
-
roland 和 Chandermani 回答了我的问题。由于 Chandermani 的回复提供了两种方法,因此被接受。谢谢大家
标签: angularjs google-maps-api-3