2017-05-16 22 views
1

features(マーカー)を含む2 layerのマップがあります。マップが十分に拡大されていれば、1 layerは見えなくなり、もう1つは見えるようになりました。このように:私は今、追加する必要がどのようなOpenlayers 4 - 機能をクリックするとレイヤーが見えなくなります

this.map.getView().on('propertychange', (e: any) => { 
    if (e.key == "resolution") { 
    if (this.map.getView().getZoom() >= 17) { 
     exampleLayer1.setVisible (false); 
     exampleLayer2.setVisible (true); 
    } else if(this.map.getView().getZoom() < 17) { 
     exampleLayer2.setVisible (false); 
     exampleLayer1.setVisible (true); 
    } 
    } 
}) 

はあなたがexampleLayer1層にfeatureをクリックすると、マップはその機能の場所にで、センターズームだろうということです、exampleLayer1が消えるようであろうと、 exampleLayer2が表示されます。このために、私は、この関数を使用します。

var select_interaction = new ol.interaction.Select(); 

select_interaction.getFeatures().on("add", (e: any) => { 
    var feature = e.element; 
    this.map.getView().setCenter(feature.getGeometry().getCoordinates()) 
    this.map.getView().setZoom(17); 
}); 

this.map.addInteraction(select_interaction); 

ほとんどすべてが1 layerが消え、もう一方が表示されますを意味し、正常に動作します。ただし、featureがクリックされても、親(layer)は表示されなくても消えません。 featureから離れてクリックすると消えます。

featureをクリックしたときに、layerfeatureがクリックされていることを含む)を非表示にするにはどうすればよいですか?

答えて

4

ol.interaction.Select選択したフィーチャは、内部のアンマネージドレイヤーに追加されます。

これは、下にあるレイヤーがなくても、選択したフィーチャーが表示される理由です。

select_interaction.getFeatures()。clear()を使用してズームしながら選択した機能の選択を解除することができます(クリックしたように)。

レイヤーの可視性を切り替えるには、レイヤーの最小/最大解像度(http://openlayers.org/en/latest/apidoc/ol.layer.Base.htmlを参照)を使用することをお勧めします。

+0

Tx、これは私に役立った – FlorisdG

関連する問題