【发布时间】:2013-04-29 12:24:31
【问题描述】:
我有一个包含 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]
【问题讨论】:
-
尝试将多个层传递给 SelectFeature 构造函数:
[wfsLayer, overlayLayer] -
谢谢克里斯托夫。我确实尝试过,但后来出现此错误:TypeError: a.renderer is undefined The overlayLayer is a GWC layer (using GeoServer)
-
也许可以试试 GIS stackexchange 论坛,我从没用过 GWC 层。
标签: openlayers