面板关闭时取消激活绘图控件

时间:2012-03-08 05:46:04

标签: javascript openlayers

我有一个控制面板,当单击中心按钮时,另一个包含绘图控件功能的面板会切换并显示(图像示例如下)Map Tools button is clicked, draw control feature panel displayed

我想要发生的是,当我再次单击“地图工具”按钮并隐藏绘图控制面板时,此面板中的所有控件都将自动停用。

对于面板切换,我使用的是简单的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'
    }
});

希望有人可以提供帮助。如果有任何其他有用的代码,我将非常感激,我会尽快发布。谢谢

1 个答案:

答案 0 :(得分:1)

您可以通过调用myControl.deactivate()deactivate控件。

更新

根据您的评论请求

Here's an example

现在请注意,当单击导航选项时,所有drawControl都将被停用。

相关代码:

function toggleControl(element) {
    for(key in drawControls) {
        var control = drawControls[key];
        if(element.value == key && element.checked) {
            control.activate();
        } else {
            control.deactivate();
        }
    }
}

每次评论更新#2:

如果要在工具栏

时停用所有控件
$("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();
        }
    }
});