我正在建立一个有角度的应用程序,我有一个来自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数据库。
我使用谷歌地图API来获取每个项目的地址。
循环列表和每个项目的最佳方法是什么我想获取地址并在下一个项目之前更新数据库。
如何在forEach中执行顺序功能?
提前致谢
使用谷歌地图的geocode 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)
})
希望有所帮助