我正在从我的 API 中检索一些数据:
[
{
"id": 1,
"lat": 50.607084,
"lng": 3.043099
},
{
"id": 2,
"lat": 50.607084,
"lng": 3.043099
},
]
我只想使用响应式编程处理数据,以便在我的请求中创建谷歌地图标记。
this.http.get('http://api/getData')
.map(res => {
return res.json()
})
.subscribe(
data => {
console.log(data);
});
在执行此操作时,我得到了很多对象,我无法找到一种方法来记录或仅隔离纬度(我得到“未知”)。
我希望能够在“.map”(可观察的?)中放置一个函数,它将获取所有变量, 并创建我将放入数组中的 markersOptions。
let markerOptions: GoogleMapsMarkerOptions = {
position: latlng,
title: 'id'
};
从我在谷歌上看到的情况来看,大多数人更喜欢将对象放在一个私有(private)变量中,我假设在另一个函数中处理它。
最佳答案
您需要做的是将从服务器检索到的数组映射到 GoogleMapsMarkerOptions 列表。所以,(我不知道 GoogleMapsMarkerOptions 的构造函数)是这样的:
this.http.get('http://api/getData')
.map(res => {
return res.json().map(x => {
return new GoogleMapsMarkerOptions({
title: x.it,
position: new GoogleMapsLatLng(x.lat, x.lng)
});
});
})
.subscribe(
data => {
console.log(data);
});
第二个映射是标准的 javascript 方法(不是 rxjs)。如果您需要支持旧浏览器,您可以使用 lodash 或下划线。
关于http - 如何使用 observable .map 和 .subscribe 处理我的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40111330/