Flo*_*sdG 1 javascript openlayers typescript
我有2地图layer的含features(标记)。我已经这样做了,如果地图放大到足够远,1layer将变得不可见,另一个将变得可见(反之亦然)。像这样:
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);
}
}
})
Run Code Online (Sandbox Code Playgroud)
我现在需要补充的是,如果你点击一个feature在exampleLayer1层,地图会在和中心开始放大对要素的位置,这将使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);
Run Code Online (Sandbox Code Playgroud)
几乎一切正常,这意味着一个layer会消失,另一个会出现。但是,feature点击不会消失,即使它的父级 (the layer) 确实消失了。如果我然后点击feature它就会消失。
我怎样才能让它layer(包括feature点击的)在feature被点击时变得不可见?
小智 5
ol.interaction.Select 选择的特征被添加到内部非托管层。
这就是为什么即使底层图层不可见,所选要素仍可见的原因。
您可以在使用 select_interaction.getFeatures().clear() 放大时取消选择所选功能(就像点击一样)。
我还建议您使用层的 min/maxResolutions(参见http://openlayers.org/en/latest/apidoc/ol.layer.Base.html)来切换层的可见性。
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |