http.get() 在 Google 地图上 API 不工作
http.get() on Google maps API not working
我正在做一个 Ionic 1 项目,我在其中使用 Google 地图地理编码 API。输入的URL是正确的,但是没有进入.success函数,也没有进入.error函数。
代码如下:
.controller('AgAddCtrl', function($scope, $state, $http) {
console.log("Agent Add");
console.log($state.params.user);
$scope.hotelReg = function() {
var address = $scope.hName + ',' + $scope.hLocality + ',' + $scope.hCity;
var latitude;
var longitude;
var user = $state.params.user;
var url = "https://maps.googleapis.com/maps/api/geocode/json?key=XXXXXXXXXXXXXX&address=" + address;
$http.get(url)
.success(function(data) {
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
console.log(latitude);
console.log(longitude);
})
.error( function(error) {
console.log("error map");
})
Backendless.Data.of("Hotels").save({
name: $scope.hName,
locality: $scope.hLocality,
city: $scope.hCity,
amenities: $scope.hAmenities,
latitude: latitude,
longitude: longitude,
agent_email: user.email
}).then( function( savedObject ) {
console.log("success");
})
.catch( function( error ) {
console.log("error upload");
});
}
})
流程是,设置 url 变量值,发出 http.get 请求并跳过 .success 和 .error。 backendless调用,抛出错误(因为没有设置纬度和经度),然后returns到http.get调用的.success函数,打印lat和lng值在控制台。我不明白为什么流量如此。代码有问题吗?
这是因为异步行为,像这样更新你的代码,Backendless 只会在 http 调用完成时执行:
$http.get(url)
.success(function(data) {
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
console.log(latitude);
console.log(longitude);
Backendless.Data.of("Hotels").save({
name: $scope.hName,
locality: $scope.hLocality,
city: $scope.hCity,
amenities: $scope.hAmenities,
latitude: latitude,
longitude: longitude,
agent_email: user.email
}).then( function( savedObject ) {
console.log("success");
})
.catch( function( error ) {
console.log("error upload");
});
}
});
})
.error( function(error) {
console.log("error map");
})
我正在做一个 Ionic 1 项目,我在其中使用 Google 地图地理编码 API。输入的URL是正确的,但是没有进入.success函数,也没有进入.error函数。
代码如下:
.controller('AgAddCtrl', function($scope, $state, $http) {
console.log("Agent Add");
console.log($state.params.user);
$scope.hotelReg = function() {
var address = $scope.hName + ',' + $scope.hLocality + ',' + $scope.hCity;
var latitude;
var longitude;
var user = $state.params.user;
var url = "https://maps.googleapis.com/maps/api/geocode/json?key=XXXXXXXXXXXXXX&address=" + address;
$http.get(url)
.success(function(data) {
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
console.log(latitude);
console.log(longitude);
})
.error( function(error) {
console.log("error map");
})
Backendless.Data.of("Hotels").save({
name: $scope.hName,
locality: $scope.hLocality,
city: $scope.hCity,
amenities: $scope.hAmenities,
latitude: latitude,
longitude: longitude,
agent_email: user.email
}).then( function( savedObject ) {
console.log("success");
})
.catch( function( error ) {
console.log("error upload");
});
}
})
流程是,设置 url 变量值,发出 http.get 请求并跳过 .success 和 .error。 backendless调用,抛出错误(因为没有设置纬度和经度),然后returns到http.get调用的.success函数,打印lat和lng值在控制台。我不明白为什么流量如此。代码有问题吗?
这是因为异步行为,像这样更新你的代码,Backendless 只会在 http 调用完成时执行:
$http.get(url)
.success(function(data) {
latitude = data.results[0].geometry.location.lat;
longitude = data.results[0].geometry.location.lng;
console.log(latitude);
console.log(longitude);
Backendless.Data.of("Hotels").save({
name: $scope.hName,
locality: $scope.hLocality,
city: $scope.hCity,
amenities: $scope.hAmenities,
latitude: latitude,
longitude: longitude,
agent_email: user.email
}).then( function( savedObject ) {
console.log("success");
})
.catch( function( error ) {
console.log("error upload");
});
}
});
})
.error( function(error) {
console.log("error map");
})