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");
  })