objectManager.ObjectCollection

Расширяет ICollection, ICustomizable.

Коллекция объектов, добавленных в слой.

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

Конструктор

objectManager.ObjectCollection()

Поля

Имя Тип Описание
balloon objectManager.Balloon

Балун объекта в составе менеджера.

events IEventManager

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

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

hint objectManager.Hint

Хинт объекта в составе ObjectManager.

options option.Manager
Менеджер опций. Имена полей, доступных через метод option.Manager.get:
  • hasBalloon - флаг наличия у коллекции поля .balloon. Если при клике на объекте не нужно открывать балун, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hasHint - флаг наличия у коллекции поля .hint. Если при наведении на объект не нужно показывать всплывающую подсказку, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hideIconOnBalloonOpen - cкрывать иконку при открытии балуна. Значение по умолчанию true.
  • openBalloonOnClick - показывать балун при клике на объект. Значение по умолчанию true.
overlays objectManager.OverlayCollection

Коллекция оверлеев одиночных объектов. Все события, за исключением событий add и remove, пропагируются от коллекции оверлеев в коллекцию объектов.

События

Имя Описание
add
Добавление объекта в коллекцию. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId – идентификатор добавленного объекта;
  • child - добавленный объект.
objectoptionschange
Изменение опций объекта через метод objectManager.ObjectCollection.setObjectOptions. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId - идентификатор объекта, у которого заменили опции.
optionschange

Изменение в опциях объекта.

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

remove
Удаление объекта из коллекции. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId – идентификатор удаленного объекта;
  • child - удаленный объект.

Методы

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

objectManager.ObjectCollection

Метод полностью дублирует логику ObjectManager.add.

each(callback, context)

Метод, вызывающий переданную функцию-обработчик для всех элементов коллекции.

getAll()

Object[]

Возвращает массив объектов, содержащихся в коллекции.

getById(id)

Object|null

Возвращает объект или null, если объекта с переданным id не существует.

getIterator()

IIterator

Возвращает итератор по коллекции.

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

getLength()

Number

Возвращает количество объектов в коллекции.

getObjectManager()

ObjectManager

Возвращает родительский слой объектов коллекции.

remove(data)

objectManager.ObjectCollection

Метод полностью дублирует логику ObjectManager.remove.

removeAll()

objectManager.ObjectCollection

Удаляет все элементы коллекции.

setObjectOptions(objectId, options)

objectManager.ObjectCollection

Метод, позволяющий динамически обновлять опции объекта. Метод следует использовать в случаях, когда вы хотите, чтобы новые опции мгновенно применились к отображению объекта на карте. Обратите внимание, менеджер не учитывает опцию 'visible'.

Описание полей

balloon

Балун объекта в составе менеджера.

hint

Хинт объекта в составе ObjectManager.

options

{option.Manager} options
Менеджер опций. Имена полей, доступных через метод option.Manager.get:
  • hasBalloon - флаг наличия у коллекции поля .balloon. Если при клике на объекте не нужно открывать балун, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hasHint - флаг наличия у коллекции поля .hint. Если при наведении на объект не нужно показывать всплывающую подсказку, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hideIconOnBalloonOpen - cкрывать иконку при открытии балуна. Значение по умолчанию true.
  • openBalloonOnClick - показывать балун при клике на объект. Значение по умолчанию true.

Пример:

// Зададим стили для одиночных объектов в составе коллекции.
objectManager.objects.options.set({
    preset: 'islands#redIcon',
    hasBalloon: false,
    zIndex: 500
});

overlays

Коллекция оверлеев одиночных объектов. Все события, за исключением событий add и remove, пропагируются от коллекции оверлеев в коллекцию объектов.

Пример:

objectManager.objects.overlays.events.add('add', function (e) {    alert('Объект ' + e.get('objectId') + ' показан на карте.');});

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

add

Добавление объекта в коллекцию. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId – идентификатор добавленного объекта;
  • child - добавленный объект.

objectoptionschange

Изменение опций объекта через метод objectManager.ObjectCollection.setObjectOptions. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId - идентификатор объекта, у которого заменили опции.

remove

Удаление объекта из коллекции. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • objectId – идентификатор удаленного объекта;
  • child - удаленный объект.

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

add

Метод полностью дублирует логику ObjectManager.add.

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

Параметры:

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

Тип: Object|Object[]|String

Объекты, добавляемые в слой.

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

Пример:

objectManager.objects.add({
    type: 'Feature',
    geometry: {
        type: 'Point',
        coordinates: [55.33, 36.64]
    }
});

each

{} each(callback, context)

Метод, вызывающий переданную функцию-обработчик для всех элементов коллекции.

Параметры:

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

Тип: Function

Функция-обработчик, в которую передаются объекты коллекции.

context *

Тип: Object

Контекст выполнения функции-обработчика.

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

Пример:

var singleCounter = 0,
    clusterCounter = 0;
objectManager.objects.each(function (object) {
    var objectState = objectManager.getObjectState(object.id);
    if (objectState.isClustered) {
        clusterCounter++;
    } else {
        if (objectState.isShown) {
            singleCounter++;
        }
    }
});
alert('Количество одиночных меток на карте: ' + singleCounter);
alert('Количество кластеризированных меток: ' + clusterCounter);

getAll

{Object[]} getAll()

Возвращает массив объектов, содержащихся в коллекции.

getById

{Object|null} getById(id)

Возвращает объект или null, если объекта с переданным id не существует.

Параметры:

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

Тип: Number

Идентификатор объекта.

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

Пример:

objectManager.objects.add('click', function (e) {
    var objectId = e.get('objectId'),
        object = objectManager.objects.getById(objectId);
});

getLength

{Number} getLength()

Возвращает количество объектов в коллекции.

Пример:

alert('Количество объектов в слое: ' + objectManager.objects.getLength());

getObjectManager

{ObjectManager} getObjectManager()

Возвращает родительский слой объектов коллекции.

remove

Метод полностью дублирует логику ObjectManager.remove.

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

Параметры:

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

Тип: Object|Object[]|String

Объекты, которые нужно удалить.

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

Пример:

// Удалим объекты с идентификаторами 34 и 25.
objectManager.objects.remove([34, 25]);

removeAll

Удаляет все элементы коллекции.

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

Пример:

objectManager.objects.removeAll();

setObjectOptions

Метод, позволяющий динамически обновлять опции объекта. Метод следует использовать в случаях, когда вы хотите, чтобы новые опции мгновенно применились к отображению объекта на карте. Обратите внимание, менеджер не учитывает опцию 'visible'.

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

Параметры:

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

Тип: Object

Идентификатор объекта, которому нужно задать опции.

options *

Тип: Object

Новые опции объекта.

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

Пример:

// Меняем цвет иконки при наведении мыши.
objectManager.objects.events.add('mouseenter', function (e) {
    var objectId = e.get('objectId'),
        overlay = objectManager.objects.overlays.getById(objectId);
    setRedColor(objectId);
    overlay.events.add('mapchange', setGreenColor);
});

objectManager.objects.events.add('mouseleave', function (e) {
    var objectId = e.get('objectId'),
        overlay = objectManager.objects.overlays.getById(objectId);
    setGreenColor(objectId);
    overlay.events.remove('mapchange', setGreenColor);
});

function setGreenColor (objectId) {
    objectManager.objects.setObjectOptions(objectId, {
        preset: 'islands#greenIcon'
    });
}

function setRedColor (objectId) {
    objectManager.objects.setClusterOptions(objectId, {
        preset: 'islands#redIcon'
    });
}