Документация
Справочник JavaScript API
2.1.64 (текущая версия)
collection
interactivityModel
Интерфейсы

objectManager.ClusterCollection

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

Коллекция кластеров, сгенерированных ObjectManager. Кластеры добавляются и удаляются из коллекции автоматически в ходе работы и доступны только на чтение. Объект-кластер представляет из себя JSON-структуру, аналогичную объектам в составе слоя. Поля объекта-кластера:

  • id - уникальный идентификатор кластера;
  • geometry - описание геометрии кластера;
  • properties - описание данных кластера. В поле properties.geoObjects хранится массив объектов, входящих в состав кластера;
  • options - опции кластера. Необязательное поле;

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

Конструктор

objectManager.ClusterCollection()

Поля

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

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

events IEventManager

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

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

hint objectManager.Hint

Хинт объекта в составе ObjectManager. Названия полей доступны через метод Event.get:

  • objectId – идентификатор объекта, над которым был показан хинт (всплывающая подсказка).

options option.Manager

Менеджер опций. Имена полей, доступных через метод option.Manager.get:

  • hasBalloon - флаг наличия у коллекции поля .balloon. Если при клике на кластер не нужно открывать балун, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hasHint - флаг наличия у коллекции поля .hint. Если при наведении на кластер не нужно показывать всплывающую подсказку, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hideIconOnBalloonOpen - cкрывать иконку при открытии балуна. Значение по умолчанию true.
  • openBalloonOnClick - опция, позволяющая запретить открытие балуна при клике на кластер. По умолчанию открытие балуна разрешено;
  • openHintOnHover - опция, позволяющая запретить показ всплывающей подсказки при наведении на кластер. По умолчанию показ хинтов разрешен.

overlays objectManager.OverlayCollection

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

state data.Manager

Состояние коллекции кластеров. Определяется следующими полями:

  • activeObject – JSON-описание объекта, выбранного в балуне кластера.

События

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

Добавление кластера в коллекцию. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId – идентификатор добавленного объекта;
  • child - добавленный объект.

clusteroptionschange

Изменение опций кластера через метод objectManager.ClusterCollection.setClusterOptions. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId - идентификатор кластера, у которого заменили опции.

optionschange

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

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

remove

Удаление кластера из коллекции. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId – идентификатор удаленного объекта;
  • child - удаленный объект.

Методы

ИмяВозвращаетОписание
each(callback, context)
getAll()

Object[]

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

getById(id)

Object|null

Возвращает объект-кластер c указанным идентификатором или null, если такого кластера не существует.

getIterator()

IIterator

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

getLength()

Number

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

getObjectManager()

ObjectManager

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

setClusterOptions(objectId, options)

objectManager.ObjectCollection

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

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

balloon

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

hint

Хинт объекта в составе ObjectManager. Названия полей доступны через метод Event.get:

  • objectId – идентификатор объекта, над которым был показан хинт (всплывающая подсказка).

options

{option.Manager} options

Менеджер опций. Имена полей, доступных через метод option.Manager.get:

  • hasBalloon - флаг наличия у коллекции поля .balloon. Если при клике на кластер не нужно открывать балун, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hasHint - флаг наличия у коллекции поля .hint. Если при наведении на кластер не нужно показывать всплывающую подсказку, рекомендуется установить эту опцию в значение false, чтобы избежать лишних инициализаций;
  • hideIconOnBalloonOpen - cкрывать иконку при открытии балуна. Значение по умолчанию true.
  • openBalloonOnClick - опция, позволяющая запретить открытие балуна при клике на кластер. По умолчанию открытие балуна разрешено;
  • openHintOnHover - опция, позволяющая запретить показ всплывающей подсказки при наведении на кластер. По умолчанию показ хинтов разрешен.

Пример:

objectManager.objects.options.set({
    preset: 'islands#greenDotIcon',
    hintContentLayout: ymaps.templateLayoutFactory.createClass('{{propeties.name}}')
});

overlays

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

Пример:

// Меняем цвет иконки кластера при наведении мышью.
objectManager.clusters.events.add(['mouseenter', 'mouseleave'], function (e) {
    var objectId = e.get('objectId'),
        overlay = objectManager.clusters.overlays.getById(objectId);
    if (e.get('type') == 'mouseenter') {
        setRedColor(objectId);
        overlay.events.add('mapchange', onMapChange);
    } else {
        setGreenColor(objectId);
        overlay.events.remove('mapchange', onMapChange);
    }
});

function onMapChange (e) {
    setGreenColor(objectManager.clusters.overlays.getId(e.get('target')));
}

function setGreenColor (objectId) {
    objectManager.clusters.setClusterOptions(objectId, {
        preset: 'islands#greenClusterIcons'
    });
}

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

state

{data.Manager} state

Состояние коллекции кластеров. Определяется следующими полями:

  • activeObject – JSON-описание объекта, выбранного в балуне кластера.

Пример:

// Откроем балун кластера с нужным выбранным объектом.
var objectState = objectManager.getObjectState(myObjects[i]);
if (objectState.isClustered) {
    objectManager.clusters.state.set('activeObject', myObjects[i]);
    objectManager.clusters.balloon.open(objectState.cluster.id);
}

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

add

Добавление кластера в коллекцию. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId – идентификатор добавленного объекта;
  • child - добавленный объект.

clusteroptionschange

Изменение опций кластера через метод objectManager.ClusterCollection.setClusterOptions. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId - идентификатор кластера, у которого заменили опции.

remove

Удаление кластера из коллекции. Экземпляр класса Event. Имена полей, доступных через метод Event.get:

  • objectId – идентификатор удаленного объекта;
  • child - удаленный объект.

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

each

{} each(callback, context)

Параметры:

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

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

]no-highlight]

Тип: Function

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

context *
[no-highlight[

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

]no-highlight]

Тип: Object

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

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

Пример:

var clusterizedObjectsCounter = 0;
objectManager.clusters.each(function (cluster) {
    clusterizedObjectsCounter += cluster.properties.geoObjects.length;
});
alert('На карте показано ' + clusterizedObjectsCounter + ' откластеризованных объектов.');

getAll

{Object[]} getAll()

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

Пример:

var clusterArray = objectManager.clusters.getAll();

getById

{Object|null} getById(id)

Возвращает объект-кластер c указанным идентификатором или null, если такого кластера не существует.

Параметры:

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

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

]no-highlight]

Тип: String

Идентификатор кластера.

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

Пример:

// Будем менять цвет кластера, если в нем более 20 объектов.
objectManager.clusters.events.add('add', function (e) {
    var cluster = objectManager.clusters.getById(e.get('objectId')),
        objects = cluster.properties.geoObjects;
    if (objects.length > 20) {
        objectManager.clusters.setClusterOptions(cluster.id, {
            preset: 'islands#redClusterIcons'
        });
    }
});

getIterator

{IIterator} getIterator()

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

Пример:

var clusterizedObjectsCounter = 0,
    it = objectManager.clusters.getIterator(),
    cluster;
while ((cluster = it.getNext()) != it.STOP_ITERATION)
    clusterizedObjectsCounter += cluster.properties.geoObjects.length;
});
alert('На карте показано ' + clusterizedObjectsCounter + ' откластеризованных объектов.');

getLength

{Number} getLength()

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

Пример:

alert('На карте показано ' + objectManager.clusters.getLength() + ' кластеров.');

getObjectManager

{ObjectManager} getObjectManager()

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

setClusterOptions

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

Параметры:

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

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

]no-highlight]

Тип: String

Идентификатор кластера.

options *
[no-highlight[

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

]no-highlight]

Тип: Object

Объект с опциями кластера.

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

Пример:

// Будем менять цвет кластера, если в нем более 20 объектов.
objectManager.clusters.events.add('add', function (e) {
    var cluster = objectManager.clusters.getById(e.get('objectId')),
        objects = cluster.properties.geoObjects;
    if (objects.length > 20) {
        objectManager.clusters.setClusterOptions(cluster.id, {
            preset: 'islands#redClusterIcons'
        });
    }
});