我正在创建一个返回位置坐标的服务。但我需要一些方法来返回一个值。
angular.module('google.maps', [])
.factory('geocode', ['$http', 'GOOGLE_MAPS_CREDENTIALS', function ($http,GOOGLE_MAPS_CREDENTIALS) {
return {
getCoords: function(addr1, zip) {
$http.get('https://maps.googleapis.com/maps/api/geocode/json?address='
+encodeURIComponent(addr1+','+zip)+'&sensor=false'
+'&key='+GOOGLE_MAPS_CREDENTIALS.API_KEY);
}
}
}])
.value('GOOGLE_MAPS_CREDENTIALS', { API_KEY: '_____________' });
在此之后,我有一个控制器调用此函数:
.controller('AddrNewCtrl', ['$scope','$state','$stateParams','geocode','$rootScope','Address',
function($scope, $state, $stateParams, geocode, $rootScope, Address) {
$scope.address = {
userId: {"__type":"Pointer","className":"_User","objectId":$rootScope.user.id}
};
$scope.create = function() {
geocode.getCoords($scope.address.address1, $scope.address.zipCode)
.success(function(data) { // <-- this is where the console error is.
var lat = data.results[0].geometry.location.lat;
var lng = data.results[0].geometry.location.lng;
$scope.address.location = new Parse.GeoPoint({latitude:lat,longitude:lng});
});
Address.create($scope.address)
.success(function(data) { $state.go('tabs.address-list'); });
};
}])
问题在于,当我调用成功时,我得到一个TypeError:
TypeError: Cannot read property 'success' of undefined
我实施此服务的方式与任何其他服务之间几乎没有区别,当我console.log
数据导致我的$http.get()
函数时,我得到了我期待的所有值调用控制器中的函数。
我正在寻找两个答案中的一个:
success
回调会返回错误?geocode
服务时,如何简单地返回一个Coordinates对象? 答案 0 :(得分:4)
你应该
getCoords: function(addr1, zip) {
return $http.get('https://maps.googleapis.com/maps/api/geocode/json?address='
+encodeURIComponent(addr1+','+zip)+'&sensor=false'
+'&key='+GOOGLE_MAPS_CREDENTIALS.API_KEY);
}