Ember.js Mapbox.js&;余烬-回收及;在组件中修改映射

Ember.js Mapbox.js&;余烬-回收及;在组件中修改映射,ember.js,ember-cli,mapbox,Ember.js,Ember Cli,Mapbox,我已经在我的ember cli应用程序中为mapbox映射创建了一个组件 我在组件中的didInsertElement回调中添加了映射和一些标记,并希望添加一个观察者,随着底层数据的实时更改更新标记 然而,我不知道如何访问我的观察者内部的地图。我不希望每次我的标记改变时都重新绘制整个地图 这是我的密码: import Ember from 'ember'; import ENV from 'ember-geofire-demo/config/environment'; export defau

我已经在我的
ember cli
应用程序中为mapbox映射创建了一个组件

我在组件中的
didInsertElement
回调中添加了映射和一些标记,并希望添加一个观察者,随着底层数据的实时更改更新标记

然而,我不知道如何访问我的观察者内部的地图。我不希望每次我的标记改变时都重新绘制整个地图

这是我的密码:

import Ember from 'ember';
import ENV from 'ember-geofire-demo/config/environment';

export default Ember.Component.extend({
  attributeBindings: ['id'],
  id: 'map',

  // this is what doesn't work
  markersObserver: function() {
    // retrieve the map - ??
    // retrieve the markerLayer on the map - ??
    var markerLayer = // ...

    // regenerate the geoJSON with the new marker positions
    var geoJSON = generateGeoJSON(markers);

    // re-set the markerLayer's geoJSON
    markerLayer.setGeoJSON(geoJSON);
  }.observes('markers'),

  // works! adds the map and markers as expected
  didInsertElement: function() {
    // create the map
    L.mapbox.accessToken = ENV.mapboxAccessToken;
    var map = L.mapbox.map('map', 'hchood.blahblah');

    // add a featureLayer to hold all the markers
    var markerLayer = L.mapbox.featureLayer().addTo(map);

    // generate GeoJSON for a series of points to add onto the markerLayer
    var markers = this.get('markers');
    var features = [];

    markers.map(function(marker) {
      var latitude = marker.get('vehicle_lat');
      var longitude = marker.get('vehicle_lon');

      features.push({
        type: 'Feature',
        geometry: {
          type: 'Point',
          coordinates: [longitude, latitude]
        },
        properties: {
          'marker-size': 'large',
          'marker-symbol': 'rail-light',
          'marker-color': '#f86767'
        }
      });
    });

    var geoJSON = {
      type: 'FeatureCollection',
      features: features
    };

    // set the markers as the GeoJSON on the markerLayer
    markerLayer.setGeoJSON(geoJSON);
  }
});

非常感谢您的任何建议

假设
markers.map
返回map对象,最简单的方法可能是通过调用
this.set('map',)
将该对象添加到组件中,并通过
this.get('map')
在您的观察者中检索该对象。为什么不将贴图保存为组件的属性?顺便说一句。你看过余烬传单()吗?我正在使用地图盒地图,没有问题。