マップのビュー(OpenLayers 3)に表示されているすべてのレイヤを検出しようとしています。 私はこの方法を試みましたが、それはピクセルのためだけに機能します。View OpenLayers3ですべてのレイヤを検出する方法
map.forEachLayerAtPixel(evt.pixel, function(layer){
// And I edit the layer...
});
私にそれを可能にする機能はありますか?
ありがとうございました。
マップのビュー(OpenLayers 3)に表示されているすべてのレイヤを検出しようとしています。 私はこの方法を試みましたが、それはピクセルのためだけに機能します。View OpenLayers3ですべてのレイヤを検出する方法
map.forEachLayerAtPixel(evt.pixel, function(layer){
// And I edit the layer...
});
私にそれを可能にする機能はありますか?
ありがとうございました。
レイヤーをループして、エクステントがビューエクステントと交差するかどうかを確認する必要があります。それは少なくとも、現在のビュー内にいくつかのピクセルを持つレイヤーを取得します。
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);
}
});
層は、実際にユーザーに表示ある場合、私はあなたが言うだろうかどうかはわかりませんが、これは近いあなたを得る可能性があります。
'getExtent()'は私のためには機能しませんので、 'layer.getSource()。c.extent; 'あなたのソリューションは、レイヤソースが' ol.source.ImageStatic'であればうまく動作しますが、WMSレイヤであれば動作しません。ありがとう – haytam
参照:http://gis.stackexchange.com/questions/123234/get-single-layer-in-openlayers-3 – Timh
私にとっては機能しません...この例では、地図。私の場合、マップビューではユーザーが見たレイヤーだけが必要です。 – haytam