objectManager.ClusterCollection
Расширяет ICustomizable, IEventEmitter.
Коллекция кластеров, сгенерированных ObjectManager. Кластеры добавляются и удаляются из коллекции автоматически в ходе работы и доступны только на чтение. Объект-кластер представляет из себя JSON-структуру, аналогичную объектам в составе слоя. Поля объекта-кластера:
- id - уникальный идентификатор кластера;
- geometry - описание геометрии кластера;
- properties - описание данных кластера. В поле properties.geoObjects хранится массив объектов, входящих в состав кластера;
- options - опции кластера. Необязательное поле;
Конструктор | Поля | События | Методы
Конструктор
objectManager.ClusterCollection()
Поля
Имя |
Тип |
Описание |
Балун кластера в составе менеджера. |
||
Менеджер событий. Унаследовано от IEventEmitter. |
||
Хинт объекта в составе ObjectManager. Названия полей доступны через метод Event.get:
|
||
Менеджер опций. Имена полей, доступных через метод option.Manager.get:
|
||
Коллекция оверлеев кластеров. Все события, за исключением событий add и remove, пропагируются от коллекции оверлеев в коллекцию кластеров. |
||
Состояние коллекции кластеров. Определяется следующими полями:
|
События
Имя |
Описание |
Добавление кластера в коллекцию. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
|
|
Изменение опций кластера через метод objectManager.ClusterCollection.setClusterOptions. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
|
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
Удаление кластера из коллекции. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
|
Методы
Имя |
Возвращает |
Описание |
getAll() |
Object[] |
Возвращает массив объектов, содержащихся в коллекции. |
Object|null |
Возвращает объект-кластер c указанным идентификатором или null, если такого кластера не существует. |
|
Возвращает итератор по коллекции. |
||
Number |
Возвращает количество объектов в коллекции. |
|
Возвращает родительский слой объектов коллекции. |
||
Возвращает ссылку на себя. |
Описание полей
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)
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: Function Функция-обработчик, в которую передаются объекты коллекции. |
|
— |
Тип: 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, если такого кластера не существует.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: 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)
Возвращает ссылку на себя.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: String Идентификатор кластера. |
|
— |
Тип: 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'
});
}
});
Обязательный параметр.