我有这样的服务
app.factory('geolocation', function ($rootScope, cordovaReady) {
return {
getCurrentPosition: cordovaReady(function (onSuccess, onError, options) {
navigator.geolocation.getCurrentPosition(function () {
var that = this,
args = arguments;
if (onSuccess) {
$rootScope.$apply(function () {
onSuccess.apply(that, args);
});
}
}, function () {
var that = this,
args = arguments;
if (onError) {
$rootScope.$apply(function () {
onError.apply(that, args);
});
}
}, options);
}),
getCurrentCity: function (onSuccess, onError) {
this.getCurrentPosition(function (position) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode(options,function (results, status) {
var city = address_component.long_name;
});
});
}
}
});
我想从控制器做类似的事情
function MainCtrl($scope, geolocation) {
geolocation.getCurrentCity(function(city){
$scope.city = city;
});
};
getCurrentPosition 工作正常,城市也确定了,但是我不知道如何在控制器中访问城市。
怎么了?当调用 getCurrentCity 时,它调用 getCurrentPosition 来确定 gps 坐标。这个坐标作为参数传递给 onSuccess 方法对吗?所以这和我想在 getCurrentCity 方法中做的完全一样,但我不知道怎么做。异步地理编码器检索到城市,我想将新数据应用于 onSuccess 方法。
有任何想法吗?