我有一个控制面板,当单击中心按钮时,另一个包含绘图控件功能的面板会切换并显示(图像示例如下)
我想要发生的是,当我再次单击“地图工具”按钮并隐藏绘图控制面板时,此面板中的所有控件都将自动停用。
对于面板切换,我使用的是简单的jQuery脚本:
$(document).ready(function(){
$(".olControlCustomNavToolbar").hide();
$("a#map_tools").click(function(event){
$(".tools").find(".olControlCustomNavToolbar").toggle();
if($(".print_pref").is(":visible")){
$(".print_pref").hide();
}
return false;
});
});
对于绘制控件我有点混合了一点来自定义(所以请不要对我说我不应该这样使用CustomNavToolbar)
OpenLayers.Control.CustomNavToolbar=OpenLayers.Class(OpenLayers.Control.Panel,{
initialize:function(options){
OpenLayers.Control.Panel.prototype.initialize.apply(this,[options]);
this.addControls([
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Polygon,{displayClass:'olControlDrawPolygon'}),
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Path,{displayClass:'olControlDrawPath'}),
new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Point,{displayClass:'olControlDrawPoint'})
])
this.displayClass='olControlCustomNavToolbar'
}
});
希望有人可以提供帮助。如果有任何其他有用的代码,我将非常感激,我会尽快发布。谢谢
答案 0 :(得分:1)
您可以通过调用myControl.deactivate()
来deactivate控件。
现在请注意,当单击导航选项时,所有drawControl都将被停用。
相关代码:
function toggleControl(element) {
for(key in drawControls) {
var control = drawControls[key];
if(element.value == key && element.checked) {
control.activate();
} else {
control.deactivate();
}
}
}
如果要在工具栏
时停用所有控件$("a#map_tools.myButton").click(function (event) {
if ($(".olControlCustomNavToolbar").is(":visible") == false) {
var controls = OpenLayers.Control.CustomNavToolbar.controls
for (x in controls) {
var control = controls[x].deactivate();
}
}
});