option.Manager

Расширяет IOptionManager .

Менеджер опций. Позволяет задавать и получать значения опций по строковому ключу, а также разрешать значения опций в контексте существующей иерархии менеджеров опций.

Специальный ключ "preset" позволяет задать набор опций по умолчанию для данного менеджера. Значением опции "preset" может быть хэш вида {"имя опции": "значение опции"}, либо строковый идентификатор хэша опций в хранилище option.presetStorage . Данный хэш опций может также содержать поле с именем "preset", что позволяет наследовать значения опций от других наборов.

При поиске значения в иерархии сначала проверяются собственные опции, затем опции заданные с помощью ключа "preset", после чего происходит обращение к родителю, если он есть.

Для отслеживания изменений некоторых опций можно использовать Monitor .

Конструктор | Поля | События | Методы

Конструктор

option.Manager([options[, parent[, name]]])

Создает менеджер опций.

Параметры:

Параметр Значение по умолчанию Описание
options

Тип: Object

Хэш опций.

parent

Тип: IOptionManager

Родительский менеджер опций.

name

Тип: String

Имя менеджера опций.

Примеры:

1.

 // Пример построения иерархии менеджеров опций.
 var parentManager = new ymaps.option.Manager({
         key1: '123'
     }),
     childManager = new ymaps.option.Manager({
         key2: '234'
     }, parentManager);
 // Выведет 123, значение берется из manager1.
 alert(childManager.get('key1'));
 // Выведет 234. значение берется из manager2.
 alert(childManager.get('key2'));
 // Перекрываем опцию.
 childManager.set('key1', '345');
 // Выведет 345, значение берется из manager2.
 alert(childManager.get('key1'));
 // Выведет 123, значение берется из manager1.
 alert(parentManager.get('key1'));

2.

 // Пример использования опции "preset".
 var optionManager = new ymaps.option.Manager({
         preset: 'islands#blueIcon'
     }),
     subOptionManager = new ymaps.option.Manager();
 // Данных нет, так как subOptionManager пуст.
 alert(subOptionManager.get('iconImageSize'));
 // Связываем два менеджера.
 subOptionManager.setParent(optionManager);
 // [37, 42] - значение получено из пресета в родительском менеджере.
 alert(subOptionManager.get('iconImageSize'));
 // Перекрываем значение iconImageSize на уровне subOptionManager.
 subOptionManager.set('iconImageSize', [10, 12]);
 // [10, 12] - значение получено из subOptionManager.
 alert(subOptionManager.get('iconImageSize'));
 // Отменяем перекрытие iconImageSize.
 subOptionManager.unset('iconImageSize');
 // [37, 42] - значение снова получено из пресета в родительском менеджере.
 alert(subOptionManager.get('iconImageSize'));

Поля

Имя Тип Описание
events IEventManager

Менеджер событий объекта.

Унаследовано от IFreezable .

События

Имя Описание
change

Изменения произошли в значениях опций, либо в иерархии наследования опций. Экземпляр класса Event .

parentchange

Сменился родительский объект.

Поля данных:

  • oldParent - старый родитель;
  • newParent - новый родитель.

Унаследовано от IChild .

Методы

Имя Возвращает Описание
freeze ()

IFreezable

Переводит объект в "замороженный" режим.

Унаследован от IFreezable .

get (key[, defaultValue])

Возвращает значение заданной опции в контексте существующей иерархии наследования опций. При вызове данного метода сначала происходит поиск значения в текущем менеджере опций, а затем, если значение не определено, поиск продолжается в иерархии родительских менеджеров.

Унаследован от IOptionManager .

getAll ()

Object

Возвращает ссылку на внутренний хэш хранящий значения опций.

Унаследован от IOptionManager .

getName ()

String

Возвращает имя менеджера опций.

Унаследован от IOptionManager .

getNative (key)

Object

Возвращает значение заданной опции, определенное на данном уровне иерархии опций, т.е. в данном менеджере.

Унаследован от IOptionManager .

getParent ()

IOptionManager |null

Возвращает родительский менеджер опций.

Унаследован от IOptionManager .

isFrozen ()

Boolean

Возвращает true, если объект находится в "замороженном" режиме, иначе false.

Унаследован от IFreezable .

resolve (key[, name])

Object

Метод, предназначенный для вызова дочерними менеджерами опций.

Унаследован от IOptionManager .

set (key[, value])

option.Manager

Задает значения опций для данного менеджера. Поддерживаются две сигнатуры:
  • один аргумент, представляющий собой хеш вида {"имя опции": "значение опции"};
  • два аргумента, первый из которых - имя опции, второй - значение.
setName (name)

Задает имя менеджера опций.

Унаследован от IOptionManager .

setParent (parent)

IChild

Задает родительский менеджер опций.

Унаследован от IOptionManager .

unfreeze ()

IFreezable

Переводит объект в активный режим.

Унаследован от IFreezable .

unset (keys)

option.Manager

Стирает значения заданных опций в данном менеджере.

unsetAll ()

option.Manager

Стирает значения всех опции в данном менеджере.

Описание событий

change

Изменения произошли в значениях опций, либо в иерархии наследования опций. Экземпляр класса Event .

Описание методов

set

Задает значения опций для данного менеджера. Поддерживаются две сигнатуры:
  • один аргумент, представляющий собой хеш вида {"имя опции": "значение опции"};
  • два аргумента, первый из которых - имя опции, второй - значение.

Возвращает cсылку на себя.

Параметры:

Параметр Значение по умолчанию Описание
key *

Тип: Object|String

Имя опции, либо хеш вида {"имя опции": "значение опции"}.

value

Тип: Object

Значение опции, если в качестве первого аргумента было передано имя.

* Обязательный параметр/опция.

Примеры:

1.

// Задание нескольких опций через хэш.
myMap.options.set({
    dblClickZoomCentering: true,
    dblClickFloatZoom: true
});
// Генерируется одно событие option.Manager.event:change.

2.

// Задание опций раздельно.
myMap.options
    .set("dblClickZoomCentering", true)
    .set("dblClickFloatZoom", true);
// После каждого set будет генерироваться событие option.Manager.event:change.

3.

// Использование freeze для минимизации количества событий option.Manager.event:change.
myMap.options.freeze();
myMap.options.set({
    dblClickZoomCentering: true,
    dblClickFloatZoom: true
});
myMap.options.set('cursor', 'zoom');
myMap.unfreeze();
// Генерируется одно событие option.Manager.event:change.

unset

{option.Manager} unset(keys)

Стирает значения заданных опций в данном менеджере.

Возвращает cсылку на себя.

Параметры:

Параметр Значение по умолчанию Описание
keys *

Тип: String|String[]

Имя опции или массив имен опций, значения которых должны быть аннулированы.

* Обязательный параметр/опция.

Пример:

map.options.unset(['dblClickZoomCentering', 'dblClickFloatZoom']);

unsetAll

{option.Manager} unsetAll()

Стирает значения всех опции в данном менеджере.

Возвращает cсылку на себя.

Пример:

var geoObject = new ymaps.Placemark([37, 55], {}, {preset:'islands#blueIcon'});
myMap.geoObjects.add(geoObject);
// Произвольным образом меняем стиль.
geoObject.options.set({
    iconLayout: 'default#image',
    iconImageHref: 'http://mysite.ru/icon.png',
    iconImageSize: [16, 16]
});
// Восстанавливаем первоначальный вид.
geoObject.options
    // Во избежание двойной реакции геообъекта
    // на изменение опций сначала вызываем freeze, а после задания
    // всех значений вызываем unfreeze.
    .freeze()
    .unsetAll()
    .set('preset','islands#blueIcon')
    .unfreeze();