首页 > 解决方案 > 获取坐标列表的地址

问题描述

我正在构建一个角度应用程序,其中有一个来自 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 中执行顺序功能?

提前致谢

标签: angularfirebaseloopsgoogle-cloud-firestore

解决方案


使用谷歌地图的地理编码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)
})

希望有帮助


推荐阅读