获取坐标列表的地址

时间:2018-11-21 07:29:59

标签: angular firebase loops google-cloud-firestore

我正在构建一个有角度的应用程序,其中列出了来自Firestore的位置,如下所示:

places =[
          {"id":1, 
           "name": place 1, 
           "latitude": 40.713484, 
           "longitude": -74.006739},
          {"id":2, 
           "name": place 2, 
           "latitude": 40.712801, 
           "longitude": 74.004936},
       .....]

列表中包含大约1000个项目,我需要操作一个函数来获取每个位置的地址并将其添加到该项目中,然后使用该项目的地址更新firestore数据库。

我正在使用google maps API来获取每个商品的地址。

遍历列表的最佳方法是什么,对于每个项目,我想获取地址并在下一个项目之前更新数据库。

如何在forEach中执行顺序功能?

预先感谢

1 个答案:

答案 0 :(得分:1)

使用Google地图的地理编码api,该地址应该会给您地址

this.http.get('https://maps.googleapis.com/maps/api/geocode/json?latlng=' + lat + ',' + lng + '&key=your_api_key')
   .subscribe((getplaceData) => {

          let address = { address: getplaceData['results'][0].formatted_address, coords: data};

        }, err => {
          console.log(JSON.stringify(err));
        });

由于您具有坐标数组,因此我将使用Rxjs forkJoin

const arrayOfCalls = [];
place.forEach(pl => {
arrayOfCalls.push(
 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + pl.lat + ',' + pl.lng + '&key=your_api_key'
 )
})

forkJoin(ArrayOfCalls).subscribe((data)=> {
  console.log(data)
})

希望有帮助