Деактивировать элементы управления Draw, когда панель закрыта - PullRequest
1 голос
/ 08 марта 2012

У меня есть панель управления, которая при нажатии на центральную кнопку переключает и отображает другую панель, содержащую элементы управления рисованием (пример изображения ниже) 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 Ответ

1 голос
/ 08 марта 2012

Вы можете деактивировать элемент управления, вызвав myControl.deactivate().

Обновление

Вот пример по вашему запросу в комментарии.

Обратите внимание, теперь, когда нажата опция навигации, все элементы управления drawControls деактивированы.

соответствующий код:

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();
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...