如何使用observable .map和.subscribe处理我的数据

时间:2016-10-18 14:44:36

标签: http angular reactive-programming rxjs

我正在从我的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'
};

从我在谷歌上看到过的,大多数人更喜欢把对象放在一个私有变量中,我假设在另一个函数中处理它。

1 个答案:

答案 0 :(得分:1)

您需要做的是将从服务器检索到的数组映射到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或下划线。