Collection

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

Базовая реализация коллекции объектов на карте.

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

Конструктор

Collection([options])

Параметры:

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

Тип: Object

Опции коллекции.

Пример:

// Пример реализации собственного меню на основе наследования от Collection.
var bind = ymaps.util.bind,
    map = new ymaps.Map(
        'map', {
            center: [55.819543, 37.611619],
            zoom: 6
        }
    ),
// Создаем собственный класс дочернего элемента меню.
    MenuItem = function (data, options) {
        MenuItem.superclass.constructor.call(this, options);
        // Создаем менеджер данных.
        // Если первым аргументом передали строчку, то обрачиваем её в хеш.
        this._data = new ymaps.data.Manager((typeof data == 'string') ? { content: data } : data);
        this._$content = null;
    };

// Наследуем MenuItem от collection.Item.
ymaps.util.augment(MenuItem, ymaps.collection.Item, {
    onAddToMap: function (map) {
        MenuItem.superclass.onAddToMap.call(this, map);
        var parentDomContainer = this.getParent().getChildElement(this);
        this._$content = $('<div class="menuItem"></div>').appendTo(parentDomContainer);
        // Создаем слушателя изменения поля 'content' в _data.
        this._dataMonitor = new ymaps.Monitor(this._data);
        this._dataMonitor.add('content', this._applyContent, this);
        this._applyContent(this._data.get('content', ''));
        // Пример использования менеджера событий domEvent.manager.
        this._eventsGroup = ymaps.domEvent.manager.group(this._$content[0]);
        this._eventsGroup.add('click', function () {
            this.events.fire('click');
        }, this);
    },

    onRemoveFromMap: function () {
        this._$content.remove();
        this._dataMonitor.removeAll();
        this._eventsGroup.removeAll();
        MenuItem.superclass.onRemoveFromMap.call(this);
    },

    getData: function () {
        return this._data;
    },

    _applyContent: function (newValue) {
        this._$content.text(newValue);
    }
});

// Создаем собственный класс меню.
var Menu = function (options) {
    Menu.superclass.constructor.call(this, options);
    this._$content = null;
};

// Наследуем Menu от Collection.
ymaps.util.augment(Menu, ymaps.Collection, {
    onAddToMap: function (map) {
        Menu.superclass.onAddToMap.call(this, map);
        var parentDomContainer = this.getParent().getChildElement(this);
        this._$content = $('<div class="menu"></div>').appendTo(parentDomContainer);
    },

    onRemoveFromMap: function () {
        this._$content.remove();
        Menu.superclass.onRemoveFromMap.call(this);
    },

    getChildElement: function (chilElement) {
        return this._$content;
    }
});

// Пример использования пользовательского элемента управления "Меню".
var menu = new Menu(),
    menuItem1 = new MenuItem('Пункт 1'),
    menuItem2 = new MenuItem({content: 'Второй пункт'}),
    menuItem3 = new MenuItem('Третий пункт');

menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
map.controls.add(menu, {top: 5, left: 5});
// Изменяем данные в первом пункте меню.
menuItem1.getData().set('content', 'Первый пункт');
// Удаляем последний пункт из меню.
menu.remove(menuItem3);

// Можно прослушивать события не каждого отдельного элемента, а сразу всей коллекции.
menu.events.add('click', function (event) {
    // Запрашиваем порядковый номер элемента, который проинициировал событие.
    console.log('menu item #' + menu.indexOf(event.get('target')));
});

Поля

Имя Тип Описание
events IEventManager

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

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

options IOptionManager

Менеджер опций.

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

События

Имя Описание
add
Произошло добавление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • child - добавленный дочерний элемент.
mapchange
Сменилась карта. Поля данных:
  • oldMap - старая карта;
  • newMap - новая карта.

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

optionschange

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

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

parentchange

Сменился родительский объект.

Поля данных:

  • oldParent - старый родитель;
  • newParent - новый родитель.

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

remove
Произошло удаление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • child - удаленный дочерний элемент.

Методы

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

Collection

Добавляет элемент в коллекцию.

each(callback, context)

Collection

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

filter(filterFunction)

Object[]

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

get(index)

Object

Returns элемент коллекции или null, если номер находится вне диапозона номеров коллекции.

getAll()

Object[]

Returns массив со всеми элементами коллекции.

getIterator()

IIterator

Returns итератор для перебора элементов коллекции.

getLength()

Number

Returns количество элементов коллекции.

getMap()

Map

Returns карту, которой принадлежит элемент коллекции.

Унаследован от collection.Item.

getParent()

IParentOnMap

Returns родительский объект.

Унаследован от collection.Item.

indexOf(childToFind)

Number

Returns порядковый номер объекта в коллекции либо -1, если объект не найден.

onAddToMap(map)

Функция, которая вызывается при добавлении элемента на карту. Для выполнения дополнительных действий при добавлении объекта на карту переопределите эту функцию.

Унаследован от collection.Item.

onRemoveFromMap()

Функция, которая вызывается при удалении элемента с карты. Для выполнения дополнительных действий при удалении объекта с карты переопределите эту функцию.

Унаследован от collection.Item.

remove(child)

Collection

Удаляет элемент из коллекции.

removeAll()

Collection

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

setParent(parent)

collection.Item

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

Унаследован от collection.Item.

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

add

Произошло добавление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • child - добавленный дочерний элемент.

remove

Произошло удаление дочернего объекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
  • child - удаленный дочерний элемент.

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

add

Добавляет элемент в коллекцию.

Returns ссылку на себя.

Параметры:

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

Тип: collection.Item

Элемент, который необходимо добавить.

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

each

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

Returns ссылку на себя.

Параметры:

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

Тип: Function

Функция-обработчик. На вход получает элемент коллекции. При возвращении функцией значения false перебор останавливается.

context *

Тип: Object

Контекст вызываемой функции.

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

filter

{Object[]} filter(filterFunction)

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

Returns массив из элементов, которые попали в выборку.

Параметры:

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

Тип: Function

Функция, которая является фильтром для объектов коллекции. Первым параметром принимает элемент из коллекции. Должна возвращать булевое значение.

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

get

{Object} get(index)

Returns элемент коллекции или null, если номер находится вне диапозона номеров коллекции.

Параметры:

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

Тип: Number

Порядковый номер элемента в коллекции.

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

getAll

{Object[]} getAll()

Returns массив со всеми элементами коллекции.

getIterator

{IIterator} getIterator()

Returns итератор для перебора элементов коллекции.

getLength

{Number} getLength()

Returns количество элементов коллекции.

indexOf

{Number} indexOf(childToFind)

Returns порядковый номер объекта в коллекции либо -1, если объект не найден.

Параметры:

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

Тип: Object

Искомый объект.

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

remove

{Collection} remove(child)

Удаляет элемент из коллекции.

Returns ссылку на себя.

Параметры:

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

Тип: collection.Item

Элемент, который необходимо удалить.

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

removeAll

{Collection} removeAll()

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

Returns ссылку на себя.