Openlayers 选择不在顶部的图层的特征

Openlayers 选择不在顶部的图层的特征,openlayers,Openlayers,我有一个3层的地图:1个基本层,1个覆盖层和1个WFS层。 我这样加载它们: map.addLayers([baseLayer, wfsLayer, overlayLayer]); 当用户单击地图时,应选择WFS图层上的要素。 因此,我在调用map.addLayers后添加了select控件: selectControl = new OpenLayers.Control.SelectFeature( [wfsLayer], { clickout:

我有一个3层的地图:1个基本层,1个覆盖层和1个WFS层。 我这样加载它们:

map.addLayers([baseLayer, wfsLayer, overlayLayer]);
当用户单击地图时,应选择WFS图层上的要素。 因此,我在调用map.addLayers后添加了select控件:

  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层可选

[编辑]

正如克里斯托弗所说,我试过了

  selectControl = new OpenLayers.Control.SelectFeature( 
      [wfsLayer, overlayLayer], 
      { 
        clickout: true, toggle: false, 
        multiple: false, hover: false
      }
  );
但这导致了OL错误,可能是因为覆盖层是WMS层

[编辑2]


我在

上重新发布了这个问题,我建议您使用错误的方法更改图层顺序

我建议你试试

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层是您要从中选择的唯一层,则您的选择控制构造函数应仅列出该层。

尝试将多个层传递给SelectFeature构造函数:[wfsLayer,OVERLAYLAYLAYER]谢谢Christophe。我确实试过了,但后来出现了以下错误:TypeError:a.renderer未定义Overlayer是使用GeoServer的GWC层可能尝试使用GIS stackexchange论坛,我从未使用过GWC层。