Страница 1 из 1

OpenLayers: создание класса контрола

Добавлено: 12 окт 2010, 00:15
Denis Rykov
Вопрос, наверное, по большей части относящийся к javascript, нежели чем к OpenLayer, но так как возник именно при работе с OL, задам его здесь. Суть вот в чём. Создаём класс контрола, обрабатывающего двойные клики на фичах векторного слоя:

Код: Выделить всё

    OpenLayers.Control.ClickFeature = OpenLayers.Class(OpenLayers.Control, {
        defaultHandlerOptions: {
            'single': true,
            'double': true,
            'pixelTolerance': 0,
            'stopSingle': true,
            'stopDouble': false
        },

        initialize: function(options) {
            this.handlerOptions = OpenLayers.Util.extend(
                {}, this.defaultHandlerOptions
            );
            OpenLayers.Control.prototype.initialize.apply(
                this, arguments
            );
            this.handler = new OpenLayers.Handler.Feature(
                this, layer1, {
                    dblclick: function(feature){
                        .....                      
                    }
                }, this.handlerOptions
            );
        }
    });
Создаём экземпляр:

Код: Выделить всё

var featureClickControl = new OpenLayers.Control.ClickFeature();
Но как видно из примера - созданный контрол обрабатывает только клики по слою layer1. Но, вдруг возникает задача повесить такой же контрол ещё и на другой слой. Можно конечно создать ещё один класс для другого слоя, но, очевидно, это неверный путь. Подскажите, как обычно поступают в таких ситуациях.

Re: OpenLayers: создание класса контрола

Добавлено: 15 окт 2010, 15:17
wmk
А что мешает написать в список параметров класса еще один пункт , переменную которая будет хранить ссылку на слой

Код: Выделить всё

...
defaultHandlerOptions: 
{
  'single'            : true ,
  'double'            : true ,
  'pixelTolerance'    : 0    ,
  'stopSingle'        : true ,
  'layer'             : null ,
  'stopDouble'        : false
},
...
А потом создавать объект с указанием слоя для мониторинга