2013-04-29 68 views
4

我有一個包含3層的貼圖:1個基礎層,1個覆蓋層和1個WFS層。 予加載它們是這樣的:選擇不在頂層的特徵

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

after map.addLayers。 這看起來沒問題。我的覆蓋圖層現在位於我的WFS圖層上方。 但是,當我現在點擊地圖時,沒有選擇。

很可能我沒有做對。我怎樣才能使我的覆蓋圖層上和我的WFS圖層可選?

[編輯]

如由Christophe提到我試圖

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

但是,這導致了一個錯誤OL,可能是因爲覆蓋層是一個WMS層。

[編輯#2]

我轉貼了這個問題https://gis.stackexchange.com/questions/59619/select-features-of-layer-which-is-not-on-top-in-openlayers

+0

嘗試將多個圖層傳遞給SelectFeature構造函數:'[wfsLayer,overlayLayer]' – 2013-04-29 13:15:49

+0

謝謝Christophe。我嘗試過,但後來我得到這個錯誤: TypeError:a.renderer未定義 overlayLayer是一個GWC層(使用GeoServer) – 2013-04-29 18:30:55

+1

也許嘗試GIS stackexchange論壇,我從來沒有使用GWC層。 – 2013-04-30 10:50:52

回答

1

我會建議你使用了錯誤的方法來改變你的圖層順序。

我會建議嘗試

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

如果你只有一個另一層這應該讓你的WFS層頂端,讓你的控制正常工作。

如果你有一個以上的其他層或你想設置一個特定的索引,你可以嘗試

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

請注意您的選擇控制的構造函數應該只列出你的WFS層,如果這是你想要的唯一層從中選擇。