1
逆ジオコーディングを行い、緯度/経度情報から市の名前を取得する必要があります。
$ http経由でGoogle maps apiを呼び出すAngularサービスを作成しました。返されたデータから、私は都市の名前だけが必要です。 Angularサービス内の$ httpの非同期性に苦しんでいました。私がそれを稼働させることができる唯一の方法は、サービスで$ qで自分の約束をすることでした。
これは機能しますが、これが正しい方法であるかどうかはわかりません。どんなフィードバックも大歓迎です!
var app = angular.module('devApp', []);
app.factory('reverseGeoCoder', function($http, $q) {
var service = {
getAddress: function(lat, lng) {
var url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' +lng;
var deferred = $q.defer();
$http.get(url).then(function(data) {
// extract the address and return it to the caller
deferred.resolve(data.data.results[0].formatted_address);
}, function(reason) {
deferred.reject(reason);
});
return deferred.promise;
}
};
return service;
});
app.controller('mainController', function(reverseGeoCoder) {
var vm = this;
reverseGeoCoder.getAddress(47.353166, 8.558387).then(function(data) {
vm.address = data;
}, function(reason) {
console.log('reverse geocoding failed, reason: ' + reason);
});
});