我有一张包含layer
个features
的{{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
)如何变为不可见?
答案 0 :(得分:4)
ol.interaction.Select选定的功能将添加到内部非托管图层。
这就是为什么即使底层不是,也可以看到所选特征。
您可以在使用select_interaction.getFeatures()。clear()进行缩放时取消选择所选要素(就像点击一样)。
我还建议您使用图层的min / maxResolutions(请参阅http://openlayers.org/en/latest/apidoc/ol.layer.Base.html)来切换图层可见性。