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

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

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

Сообщение 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. Но, вдруг возникает задача повесить такой же контрол ещё и на другой слой. Можно конечно создать ещё один класс для другого слоя, но, очевидно, это неверный путь. Подскажите, как обычно поступают в таких ситуациях.
Spatial is now, more than ever, just another column- The Geometry Column.
Аватара пользователя
wmk
Активный участник
Сообщения: 102
Зарегистрирован: 11 янв 2009, 17:38
Репутация: 0
Откуда: Казань
Контактная информация:

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

Сообщение wmk »

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

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

...
defaultHandlerOptions: 
{
  'single'            : true ,
  'double'            : true ,
  'pixelTolerance'    : 0    ,
  'stopSingle'        : true ,
  'layer'             : null ,
  'stopDouble'        : false
},
...
А потом создавать объект с указанием слоя для мониторинга
OurGuns.ru - пневматическое оружие России и мира
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя