2016-04-04 7 views
0

マップのビュー(OpenLayers 3)に表示されているすべてのレイヤを検出しようとしています。 私はこの方法を試みましたが、それはピクセルのためだけに機能します。View OpenLayers3ですべてのレイヤを検出する方法

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

私にそれを可能にする機能はありますか?

ありがとうございました。

+0

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

+0

私にとっては機能しません...この例では、地図。私の場合、マップビューではユーザーが見たレイヤーだけが必要です。 – haytam

答えて

0

レイヤーをループして、エクステントがビューエクステントと交差するかどうかを確認する必要があります。それは少なくとも、現在のビュー内にいくつかのピクセルを持つレイヤーを取得します。

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); 
    } 
}); 

層は、実際にユーザーに表示ある場合、私はあなたが言うだろうかどうかはわかりませんが、これは近いあなたを得る可能性があります。

+0

'getExtent()'は私のためには機能しませんので、 'layer.getSource()。c.extent; 'あなたのソリューションは、レイヤソースが' ol.source.ImageStatic'であればうまく動作しますが、WMSレイヤであれば動作しません。ありがとう – haytam

関連する問題