2017-01-22 9 views
0

単にAPIを呼び出してユーザーアドレスの応答を取得し、各アドレスに対応する必要があります。私はgoogle APIを呼び出して経度と緯度を取得する必要があります。
私はあまりにも多くの方法を試しましたが、ついに私は空の手を見ています。
私はどこが間違っているのか理解してください。

app.controller('myController', function($scope, $rootScope, $http,$q){ 

$scope.myGeoKey="AIzaSyCqoOf_Kx5wzrYh3ioxFQ_xyz"; 

// FIRST API REQUEST 
var url="http://xyz/abc?origin=noida"; 
$http.get(url, { 
     headers:{'Content-Type': 'application/json'} 
}). 
then(function(data, status, headers, config) { 

    // response is like 
    /* 
     [ 
      { 
       "address":"Sector 64, Noida", 
       "state": "Uttar Pradesh" 
      }, 
      { 
       "address":"Sector 62, Noida", 
       "state": "Uttar Pradesh" 
      }, 
      { 
       "address":"CP, New Delhi", 
       "state": "Delhi" 
      } 
     ] 
    */ 

    var synchronizeData = []; 
    var asynchronizeData = []; 

    for (var key in data.data.response){ 

     var rawAddress=data.data.response[key].address+", "+data.data.response[key].state; 
     var geoUrl="?address="+rawAddress+"&key="+$scope.myGeoKey; 

     // GET LATITUDE AND LONGITUDE FOR EACH API RESPONSE 

     $http.get("https://maps.googleapis.com/maps/api/geocode/json"+geoUrl). 
     then(function(data, status, headers, config) { 

      if(data.data.status=="OK") { 
       var geometry=data.data.results[0].geometry.location; 

       var latlng={ 
        "lat": geometry.lat, 
        "long": geometry.lng 
       } 
       asynchronizeData.push(latlng); 
      } 

     }); 
    } 

    // console.log(asynchronizeData) // WORKING TILL HERE 

    $q.all(asynchronizeData).then(function(response){ 

     // console.log(response) // THIS IS NOT WORKING 

     for (var i=0,len = response.length;i<len;++i){ 
      synchronizeData.push(response[i]); 
     } 
     $scope.synchronized = synchronizeData; 

     console.log($scope.synchronized); // FINAL OUTPUT NOT WORKING 

    }); 
}); 
}); 

してくださいしてください。..
おかげ

答えて

0

.ALL()PARAM(または約束のハッシュ)として約束の配列を必要としています。 そして、リテラルオブジェクトの配列を渡します!

は、私は本当にわからないですけど、自分のasyncArray内のすべてのあなたの2番目のHTTP呼び出し(ループ1)をプッシュしよう$ qを

に関するドキュメントをお読みください。 次に、.all()関数で何が起こっているか教えてください。

$ httpは約束を返すので、配列に約束を積み重ねることができるので、.all()を使うことができます。

関連する問題