angular - 获取坐标列表的地址
问题描述
我正在构建一个角度应用程序,其中有一个来自 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 中执行顺序功能?
提前致谢
解决方案
使用谷歌地图的地理编码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)
})
希望有帮助
推荐阅读
- vba - VBA 另存为自定义文件
- asp.net - HttpClient - 没有 mediatypeformatter 可用于读取“模型”类型的对象
- ios - iOS:创建共享代码的项目
- c# - 在c#中反序列化包含数组的Json数据
- jquery - 从 JQuery 中的字符串中提取 HTML 内容
- image - 如何检测压缩图像是否是从未压缩的图像创建的
- javascript - 不要在 html 标签内执行 javascript
- javascript - 控制台输出不显示数组元素的数量。代码中无法访问的数组元素
- automated-tests - CAPL - TestStepInconclusive - “当前上下文中不允许使用函数”
- android - LifecycleRegistry 的 popParentState 处的 ArrayIndexOutOfBoundsException