Openlayers 4 - 在要素点击时使图层不可见

时间:2017-05-16 09:55:44

标签: javascript typescript openlayers

我有一张包含layerfeatures的{​​{1}}地图。我已经做到这一点,如果地图放大到足够远,1 layer将变得不可见而另一个将变得可见(反之亦然)。像这样:

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

我现在需要添加的是,如果您点击feature图层中的exampleLayer1,地图会放大并以该要素的位置为中心,这会使exampleLayer1 1}}消失,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);

几乎一切正常,意味着一个layer将消失,另一个将出现。但是,点击的feature不会消失,即使它的父级(layer)确实消失了。如果我再点击feature,它就会消失。

点击layer后,feature(包括点击的feature)如何变为不可见?

1 个答案:

答案 0 :(得分:4)

ol.interaction.Select选定的功能将添加到内部非托管图层。

这就是为什么即使底层不是,也可以看到所选特征。

您可以在使用select_interaction.getFeatures()。clear()进行缩放时取消选择所选要素(就像点击一样)。

我还建议您使用图层的min / maxResolutions(请参阅http://openlayers.org/en/latest/apidoc/ol.layer.Base.html)来切换图层可见性。