OpenLayers.Control.ModifyFeature コントロールのレイヤーを変更したい コントローラーを完全に削除してから、新しいレイヤーに基づいて別のレイヤーを追加しようとしました。そして、次のようなループを使用して、ModifyFeature のレイヤー プロパティを直接変更しました。
for(var i = 0; i <= 10; i++) {
if(document.getElementById('verksamhet').selectedIndex === i) {
controlList.modifyFeature.layer = window[layerName[i+1]];
}
}
そして、それはほとんど機能します。スタイルは変更されますが、コントローラーはこの図のように前のレイヤーでのみ機能します。(緑は前のレイヤーで、コントローラーが応答する唯一のレイヤーですが、スタイルは正しいレイヤー スタイルに変更されます)。
(http://i.imgur.com/w3ZbW.png)
コントローラーを削除して新しいコントローラーを追加するには、次のようにします。
controlList.modifyFeature.deactivate();
map.removeControl(controlList.modifyFeature);
for(var i = 0; i <= 10; i++) {
if(document.getElementById('verksamhet').selectedIndex === i) {
controlList.modifyFeature = new OpenLayers.Control.ModifyFeature(window[layerName[i+1]], {displayClass: 'modButton', clickout: true, toggle: true, title: 'Modify feature'});
}
}
map.addControl(controlList.modifyFeature);
controlList.modifyFeature.activate();
削除して新しいコントローラーを追加する方法は機能すると思いますが、問題はコントローラーの複製を取得することです。つまり、一度に複数のレイヤーを変更するため、コントローラーを削除しないと思います最初の場所。
これを支援する方法は大歓迎です。