Googleマップジオコーダーを使用するAngularサービスを作成しようとしていますが、サービス関数の実行後にGoogleからのコールバックが実行されていることがわかりました。
コントローラ
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) が undefined を出力し、サービスの console.log(results) が関数の呼び出し後に Google から結果を取得することです。つまり、コールバック関数は時間内に結果を返しませんでした。
この問題を克服する方法はありますか? ありがとう。