2013-04-29 3 views
4

나는 기본 레이어 1 개, 오버레이 레이어 1 개 및 WFS 레이어 1 개로 구성된 3 개의 레이어가있는지도가 있습니다. 나는이처럼로드 :상단에없는 레이어의 피쳐 선택

map.addLayers([baseLayer, wfsLayer, overlayLayer]); 

사용자가지도를 클릭하면 그것은 WFS 층에있는 기능을 선택해야합니다. 그래서 내가 전화 map.addLayers 후 선택 제어를 추가했습니다 : 이것은 위대한 작품을

selectControl = new OpenLayers.Control.SelectFeature(
     [wfsLayer], 
     { 
      clickout: true, toggle: false, 
      multiple: false, hover: false 
     } 
); 
    map.addControl(selectControl); 
    selectControl.activate(); 

클릭하면 내 기능을 선택하세요.

하지만 내 오버레이 레이어가 WFS 레이어 아래에 있으며 맨 위에 있어야합니다. 오버레이 레이어는 채워지지 않은 다각형 레이어입니다. 그래서 추가했습니다.

map.setLayerZIndex(overlayLayer, map.Z_INDEX_BASE[ "Feature" ]+10); 

map.addLayers. 괜찮아 보입니다. 내 오버레이 레이어가 이제 내 WFS 레이어 위에 있습니다. 하지만지도를 클릭하면 아무 것도 선택되지 않습니다.

아마도 내가 제대로하지 않을 것입니다. 오버레이 레이어를 맨 위에, WFS 레이어를 선택 가능하게 만들려면 어떻게해야합니까? 크리스토프 의해 바와 같이

[EDIT]

제가

selectControl = new OpenLayers.Control.SelectFeature( 
     [wfsLayer, overlayLayer], 
     { 
     clickout: true, toggle: false, 
     multiple: false, hover: false 
     } 
); 

시도하지만 오버레이 층이 WMS 층 인 탓, OL 오류 결과.

[편집 # 2]

나는 당신이 당신의 레이어 순서를 변경하는 잘못된 방법을 사용하는 것이 좋습니다 것입니다 https://gis.stackexchange.com/questions/59619/select-features-of-layer-which-is-not-on-top-in-openlayers

+0

SelectFeature 생성자에 여러 개의 레이어를 전달해 봅니다 :'[wfsLayer, overlayLayer] ' –

+0

감사합니다 크리스토퍼. 나는 그것을 시도했지만 다음 오류가 발생했다. TypeError : a.renderer가 정의되지 않았다. overlayLayer는 (GeoServer를 사용하는) GWC 레이어이다. –

+1

GIS 스택 교환 포럼을 시도해 본 적이있다. GWC 레이어를 사용한 적이 없다. –

답변

1

에서이 질문을 다시 게시했습니다. 당신 만이 상단에 WFS 레이어를 가져오고 컨트롤이 제대로 작동 할 수 있도록해야 하나 개 다른 계층이있는 경우

나는

var wfsLayer = map.getLayersByName('WFS_Layer_Name')[0]; 
map.raiseLayer(wfsLayer, map.layers.length); 

을 시도하는 것이 좋습니다 것입니다. 당신이 하나 개 이상의 다른 계층이 있거나 특정 인덱스를 설정하고자하는 경우 즉, 당신이 원하는 유일한 레이어 인 경우

당신은

var wfsLayer = map.getLayersByName('WFS_Layer_Name')[0]; 
map.setLayerIndex(wfsLayer, 99); 

당신의 선택 제어 생성자 만 WFS 층을 나열해야합니다 유의하시기 바랍니다 시도 할 수 에서 선택할 수 있습니다.

관련 문제