2014-09-23 15 views
8

Bu yüzden, bir gösterge paneli oluşturmak için Open Layers 3'ü Ember.js ile kullanıyorum ve harita yükünü dinamik olarak yaptım ancak rotayı terkettiğimde yok edilmesini istiyorum. Bulduğum şey, map.destroy() idi, ancak API'nin eski bir sürümü için ve yeni sürümde bir tane görünmüyordu.Açık Katmanların Bozulması 3 harita

Haritaya birkaç kez gittikten sonra krom hata ayıklayıcısını kullandım ve 29 ol.Map nesnesine sahip olduğumu gördüm.

Bu defa

App.MapView = Ember.View.extend({ 
    map: null, 
    didInsertElement: function() { 
    this.map = new ol.Map({ 
     target: 'map', 
     layers: [ 
     new ol.layer.Tile({ 
      source: new ol.source.MapQuest({layer: 'sat'}) 
     }) 
     ], 
     view: new ol.View({ 
     center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), 
     zoom: 4 
     }) 
    }); 
    }, 
    willDestroyElement: function() { 
    // destroy this.map 
    } 
}); 

Ben haritalar kaldırılmasıyla ilgili dokümanlar herhangi bir şey bulamıyorum ne var.

Şimdiden teşekkürler.

cevap

18

Böyle bir şey yapmak denemelisiniz:

App.MapView = Ember.View.extend({ 
    // if you are not using Ember.get/set you'd better make this "private" 
    _map: null, 
    didInsertElement: function() { 
    this._map = new ol.Map(...); 
    }, 
    willDestroyElement: function() { 
    this._map.setTarget(null); 
    this._map = null; 
    } 
}); 

Onun elemanı haritayı ayırmak ve doğru çöp toplama sağlar. Harita nesnesindeki diğer referansları da kaldırmayı unutmayın.

+5

setTarget (null) - teşekkürler! –

İlgili konular