无法读取未定义的属性'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 已经通过一些日志记录进行了定义,所以我不明白为什么我仍然会收到错误。提前谢谢你。

您的results["0"]返回为空,这就是您收到该错误的原因。由于您正在迭代 for 循环并且您成功打印出坐标,我的猜测是,这些获取到 Google API 的获取中至少有一次没有返回预期的结果。要对此进行测试,您可以在尝试访问结果对象之前记录它,并检查错误之前返回的对象。

相关内容

  • 没有找到相关文章

最新更新