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 *

Тип: Function

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

context *

Тип: 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 *

Тип: 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 *

Тип: String

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

options *

Тип: 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'
        });
    }
});