2017-05-16 4 views
1

features (마커)가 포함 된 2 layer의지도가 있습니다. 지도가 충분히 확대 된 경우 1 layer이 보이지 않게되고 다른 하나가 표시됩니다 (그리고 그 반대). 이처럼 :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); 

거의 모든 하나 layer가 사라지고 다른이 나타납니다 의미, 잘 작동이 들어,이 기능을 사용합니다. 그러나 feature을 클릭하면 부모 (layer)가 사라지더라도 사라지지 않습니다. 그런 다음 feature에서 클릭하면 사라집니다.

클릭하면 feature을 클릭하면 (feature 클릭)을 보이지 않게 할 수 있습니까?

답변

4

ol.interaction.Select 선택한 기능이 내부 관리되지 않는 레이어에 추가됩니다.

이 때문에 기본 레이어가 보이지 않아도 선택한 피쳐가 표시됩니다.

select_interaction.getFeatures(). clear()를 사용하여 확대/축소 중에 선택한 피쳐의 선택을 취소 할 수 있습니다.

레이어 가시성을 토글하려면 레이어의 최소/최대 해상도 (http://openlayers.org/en/latest/apidoc/ol.layer.Base.html 참조)를 사용하는 것이 좋습니다.

+0

Tx,이 도움이되었습니다. – FlorisdG