2017-10-15 9 views
0

私のコードはこのように動作しますが、この関数が呼び出されるたびに携帯端末でこの質問のタイトルと同じ名前のエラーが発生し続けます。未定義の 'geometry'プロパティを読み取ることができません

_matchAddresses(id) { 
    fetch('https://myapp.com/rest/jobs/address/' + id) 
    .then((response) => response.json()) 
    .then((responseJson) => { 
    var addresses = []; 
    console.log('addresses: ' + responseJson); 
    for (var i=0; i<responseJson.length; i++) { 
     addresses.push(responseJson[i]); 
     for (var j=0; j<addresses.length; j++) { 
     fetch('https://maps.googleapis.com/maps/api/geocode/json?address='+ addresses[j].split(" ") + '&key=googleapikey') 
     .then((response) => response.json()) 
     .then((responseJson) => { 
      let lat = responseJson.results["0"].geometry.location.lat; //error here 
      let lng = responseJson.results["0"].geometry.location.lng; //error here 
      console.log("coordinates: " + lat + " " + lng); //returns coordinates every time 

      if (this._latMatch(userLat, lat) && this._lngMatch(userLng, lng)) { 
       this._myFunction(); 
       console.log("fire"); 
      } 

     }) 
     .catch((error) => { 
      console.error(error); 
     }); 
    } 
    } 
}); 
} 

私はlatとlngがいくつかのロギングで定義されていることを知っています。なぜ私はまだエラーが発生しているのかわかりません。前もって感謝します。

答えて

2

results["0"]が空に戻ってきているため、そのエラーが発生しています。 forループを反復していて座標を正しく出力しているので、GoogleのAPIへの少なくとも1つのフェッチが期待した結果を返さないというのが私の推測です。これをテストするには、結果オブジェクトにアクセスする前にログに記録し、エラーの前に返されたオブジェクトをチェックします。

+0

ありがとうございます。バックエンドのアドレスの1つにタイプミスがあり、googlemaps APIが存在しないアドレスを検索していました。しかし、私は別の座標の正しい量を取得していた面白いです...私は十分な評判を持っていれば、私はあなたに最高の投票を与えるだろう。 –

+0

うれしい私は助けることができました! –

関連する問題