1 つのベース レイヤー、1 つのオーバーレイ、1 つの WFS レイヤーの 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 レイヤーを選択可能にするにはどうすればよいですか?
[編集]
クリストフが述べたように、私は試しました
selectControl = new OpenLayers.Control.SelectFeature(
[wfsLayer, overlayLayer],
{
clickout: true, toggle: false,
multiple: false, hover: false
}
);
しかし、おそらくオーバーレイ レイヤーが WMS レイヤーであるため、OL エラーが発生しました。
[編集#2]