我有一个包含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]
重新发布此问题答案 0 :(得分: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图层。