我正在构建一个有角度的应用程序,其中列出了来自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中执行顺序功能?
预先感谢
答案 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)
})
希望有帮助