2016-04-04 19 views
0

Harita görünümünde görülen tüm katmanları algılamaya çalışıyorum (OpenLayers 3). Bu yöntemi denedim, ancak sadece bir piksel için çalışıyor.View OpenLayers3'teki her katmanın nasıl düzenlenir

map.forEachLayerAtPixel(evt.pixel, function(layer){ 
     // And I edit the layer... 
    }); 

Yapmamı sağlayan bir işlev var mı?

Teşekkürler.

+0

bkz: http://gis.stackexchange.com/questions/123234/get-single-layer-in-openlayers-3 – Timh

+0

benim için çalışmıyor ... çünkü bu örnekte tüm katmanları harita. ama benim durumumda sadece harita görünümünde kullanıcı tarafından görülen katmanları görmek istiyorum. – haytam

cevap

0

Katmanlar arasında geçiş yapabilmeniz ve kapsamın görüş açısı ile kesişip kesmediğini kontrol edebilmeniz gerekir. Bu, en azından mevcut görünümde bazı piksellere sahip katmanları size sağlayacaktır.

var viewExtent = map.getView().calculateExtent(map.getSize()); 
var layersInView = []; 
map.getLayers().forEach(function (layer) { 
    var layerExtent = layer.getExtent(); 

    if (ol.extent.intersects(layerExtent, viewExtent)) { 
    layersInView.push(layer); 
    } 
}); 

bir tabaka kullanıcıya gerçekten görünürise sana söylerdim emin değilim, ama bu yaklaştırır alabilirsiniz.

+0

'getExtent()' benim için çalışmaz, bu yüzden 'layer.getSource(). C.extent ile değiştirmek zorunda kaldım; 'Eğer katman kaynağı ol.source.ImageStatic ise çözümünüz iyi çalışır, ancak bir WMS katmanı ise işe yaramıyor. Teşekkürler – haytam

İlgili konular