collection.Item
Расширяет IChildOnMap, ICustomizable, IEventEmitter, IParentOnMap.
Базовый класс элемента коллекции объектов карты.
Конструктор
collection.Item([options])
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Object Опции обьекта. |
Пример:
// Пример реализации собственного элемента управления на основе наследования от collection.Item.
// Элемент управления отображает название объекта, который находится в центре карты.
var bind = ymaps.util.bind,
map = new ymaps.Map(
'map', {
center: [55.819543, 37.611619],
zoom: 6
}
),
// Создаем собственный класс.
CustomControlClass = function(options) {
CustomControlClass.superclass.constructor.call(this, options);
this._$content = null;
this._geocoderPromise = null;
};
// И наследуем его от collection.Item.
ymaps.util.augment(CustomControlClass, ymaps.collection.Item, {
onAddToMap: function (map) {
CustomControlClass.superclass.onAddToMap.call(this, map);
// Создаем HTML-элемент с текстом.
var parentDomContainer = this.getParent().getChildElement(this);
this._$content = $('<div class="customControl"></div>').appendTo(parentDomContainer);
this._mapEventGroup = this.getMap().events.group();
// Запрашиваем данные после изменения положения карты.
this._mapEventGroup.add('boundschange', this._createRequest, this);
// Сразу же запращиваем название места.
this._createRequest();
},
onRemoveFromMap: function () {
this._$content.remove();
this._mapEventGroup.removeAll();
this._stopPendingRequest();
CustomControlClass.superclass.onRemoveFromMap.call(this);
},
_createRequest: function() {
// Отменяем ожидание предыдущих данных.
this._stopPendingRequest();
// Запращиваем информацию о месте по координатам центра карты.
this._geocoderPromise = ymaps.geocode(this.getMap().getCenter().join(','), {
// Указываем, что ответ должен быть в формате JSON.
json: true,
// Устанавливаем лимит на кол-во записей в ответе.
results: 1
}).then(
bind(this._onServerResponse, this)
);
},
_stopPendingRequest: function () {
if (this._geocoderPromise) {
this._geocoderPromise.reject();
this._geocoderPromise = null;
}
},
_onServerResponse: function(result) {
// Данные от сервера были получены и теперь их необходимо отобразить.
// Описание ответа в формате JSON.
var members = result.GeoObjectCollection.featureMember,
geoObjectData = (members && members.length) ? members[0].GeoObject : null;
if (geoObjectData) {
this._$content.text(geoObjectData.metaDataProperty.GeocoderMetaData.text);
}
}
});
var customControl = new CustomControlClass();
map.controls.add(customControl, {top: 10, left: 10});
Поля
Имя |
Тип |
Описание |
Менеджер событий. Унаследовано от IEventEmitter. |
||
Менеджер опций. Унаследовано от ICustomizable. |
События
Имя |
Описание |
Сменилась карта. Поля данных: • newMap - новая карта. Унаследовано от IParentOnMap. |
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
Сменился родительский объект. Поля данных: • oldParent - старый родитель; • newParent - новый родитель. Унаследовано от IChild. |
Методы
Имя |
Возвращает |
Описание |
getMap() |
Returns карту, которой принадлежит элемент коллекции. |
|
Returns родительский объект. |
||
Функция, которая вызывается при добавлении элемента на карту. Для выполнения дополнительных действий при добавлении объекта на карту переопределите эту функцию. |
||
Функция, которая вызывается при удалении элемента с карты. Для выполнения дополнительных действий при удалении объекта с карты переопределите эту функцию. |
||
Устанавливает родителя для заданного элемента коллекции. |
Описание методов
getMap
{Map} getMap()
Returns карту, которой принадлежит элемент коллекции.
getParent
{IParentOnMap} getParent()
Returns родительский объект.
onAddToMap
{} onAddToMap(map)
Функция, которая вызывается при добавлении элемента на карту. Для выполнения дополнительных действий при добавлении объекта на карту переопределите эту функцию.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: Map Объект карты, на которую добавлен элемент. |
* Обязательный параметр/опция.
onRemoveFromMap
{} onRemoveFromMap()
Функция, которая вызывается при удалении элемента с карты. Для выполнения дополнительных действий при удалении объекта с карты переопределите эту функцию.
setParent
{collection.Item} setParent(parent)
Устанавливает родителя для заданного элемента коллекции.
Returns ссылку на себя.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: IParentOnMap Родительский объект. |
* Обязательный параметр/опция.
Обязательный параметр/опция.