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

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

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

balloon

{objectManager.Balloon} balloon

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

hint

{objectManager.Hint} 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

{objectManager.OverlayCollection} overlays

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

Пример:

// Изменение цвета значка кластера при наведении курсора мыши.
objectManager.clusters.events.add(['mouseenter', 'mouseleave'], function (e) {
    var objectId = e.get('objectId');
    var 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;
var it = objectManager.clusters.getIterator();
var 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

{objectManager.ObjectCollection} setClusterOptions(objectId, options)

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

Параметры:

Параметр

Значение по умолчанию

Описание

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'
        });
    }
});
Предыдущая
Следующая