Документация
Справочник JavaScript API
2.1.64 (текущая версия)
collection
interactivityModel
Интерфейсы

RemoteObjectManager

Расширяет ICustomizable, IEventEmitter, IGeoObject, IParentOnMap.

Менеджер объектов, осуществляющий их оптимальную подгрузку с сервера. Менеджер отправляет запросы за данными по указанному url в JSONP-формате. Описание формата соответствует формату добавляемых в ObjectManager объектов (см. ObjectManager.add). Также поддерживаются объекты типа 'Cluster', содержащие поля:

  • type — тип объекта, для кластеров всегда 'Cluster';
  • id - уникальный идентификатор кластера;
  • geometry - геометрия кластера в JSON-формате;
  • features - массив объектов в составе кластера. Необязательное поле;
  • bbox — массив координат, описывающих прямоугольную область, содержащую все объекты в составе кластера;
  • number - количество объектов в кластере;
  • properties - данные кластера.
Данный модуль рассчитан на загрузку и отображение данных, предварительно обработанных на сервере. В частности, рекомендуется использовать модуль для отображения результатов серверной кластеризации. Данные перезапрашиваются заново при изменении коэффициента масштабирования карты. Модуль не осуществляет кластеризацию объектов или фильтрацию по области видимости на клиенте. Чтобы кластеризовать объекты после их загрузки на сторону клиента, используйте LoadingObjectManager. Обратите внимание, что у объектов, отрисованных на карте через данный менеджер, нельзя включать режимы редактирования и перетаскивания.

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

Конструктор

RemoteObjectManager(urlTemplate[, options])

Параметры:

ПараметрЗначение по умолчаниюОписание
urlTemplate *
[no-highlight[

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

]no-highlight]

Тип: String

шаблон URL данных. Поддерживаются специальные конструкции по аналогии с Layer. Также поддерживаются подстановки:

  • %b заменяется на массив географических координат, описывающих прямоугольную область, для которой требуется загрузить данные.
  • %t заменяется на массив номеров тайлов, описывающих прямоугольную область, для которой требуется загрузить данные.

options

Тип: Object

Опции.

  • Можно задавать все опции, указанные в описании Clusterer, за исключением опций hasBalloon и hasHint.
  • Опции для кластеров задаются с префиксом cluster. Список опций указан в описании класса ClusterPlacemark;
  • Опции для одиночных объектов задаются с префиксом geoObject. Список опций определен в классе GeoObject.

options.loadTileSize 256

Тип: Number

Размер тайла для загрузки данных.

options.paddingParamName 'callback'

Тип: Boolean

Имя GET-параметра, который содержит значение jsonp-колбека.

options.paddingTemplate null

Тип: String

Шаблон для jsonp-колбека. Поддерживает те же подстановки, что и urlTemplate. Все символы, не являющиеся буквой или цифрой, будут заменены на '_'. Если параметр не задан, то имя jsonp-колбека будет сгенерировано автоматически. Примеры преобразований при tileNumber=[3, 1], zoom=9:

  • 'myCallback=%x' => 'myCallback_3'
  • '%c' => 'x_3_y_1_z_9'
  • 'callback2_%c' => 'callback2_x_3_y_1_z_9'
  • 'callback%test' => 'callback_test'
  • 'callback_%b' => 'callback_85_0841__180_0000_85_0841_180_0000'
Обратите внимание, что если не использовать в значении опции подстановки, то это может привести к ошибке. Все запросы будут обращаться к одной callback-функции.

options.splitRequests false

Тип: Boolean

Разделять запросы за данными на запросы за одиночными тайлами. По умолчанию запросы делаются за данными для прямоугольной области, содержащей несколько тайлов.

options.syncOverlayInit false

Тип: Boolean

Флаг, разрешающий создавать оверлеи для объектов синхронно. Обратите внимание, что при синхронном создании оверлея нужно самостоятельно обеспечить загрузку нужного класса, реализующего интерфейс IOverlay. По умолчанию оверлеи создаются асинхронно, при этом класс оверлея загружается по требованию.

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

Примеры:

1.

var objectManager = new ymaps.RemoteObjectManager('http://myServer.com/tile?bbox=%b', {
    // Опции кластеров задаются с префиксом 'cluster'.
    clusterHasBalloon: false,
    // Опции геообъектов задаются с префиксом 'geoObject'.
    geoObjectOpenBalloonOnClick: false
});

// Опции можно задавать напрямую в дочерние коллекции.
objectManager.clusters.options.set({
    preset: 'islands#grayClusterIcons',
    hintContentLayout: ymaps.templateLayoutFactory.createClass('Группа объектов')
});
objectManager.objects.options.set('preset', 'islands#grayIcon');

2.

Пример ответа для RemoteObjectManager.
jsonp_callback({
    // Ответ содержит поля error и data. В случае ошибки в поле error
    // пишется код ошибки или ее описание.
    error: null,
    data: {
        type: 'FeatureCollection',
        features: [
             {
                 type: 'Feature',
                 geometry: {
                     type: 'Point',
                     coordinates: [55, 35]
                 },
                 id: 23,
                 properties: {
                     balloonContent: 'Содержимое балуна метки',
                     iconContent: 'Содержимое метки'
                 },
                 options: {
                     preset: 'islands#yellowIcon'
                 }
             },
             {
                 type: 'Cluster',
                 id: 24,
                 bbox: [[35, 46], [46, 57]],
                 number: 34,
                 // Массив, описывающий 34 объекта в составе кластера.
                 // Необязательное поле.
                 // Если поле не задано, у кластера по клику будет
                 // открываться пустой балун.
                 features: [{
                     type: 'Feature',
                     id: 512,
                     properties: {
                         balloonContent: 'Содержимое балуна метки',
                     clusterCaption: 'Заголовок метки в балуне кластера'
                     },
                     ...
                 ],
                 geometry: {
                     type: 'Point',
                     coordinates: [40.5, 51]
                 },
                 properties: {
                     iconContent: 34
                 }
             }
        ]
    }
});

Поля

ИмяТипОписание
clusters objectManager.ClusterCollection

Коллекция кластеров, сгенерированных менеджером.

events IEventManager

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

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

geometry IGeometry|null

Геометрия геообъекта.

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

objects objectManager.ObjectCollection

Коллекция объектов, добавленных в слой.

options IOptionManager

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

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

properties IDataManager

Данные геообъекта.

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

state IDataManager

Состояние геообъекта.

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

События

ИмяОписание
click

Однократное нажатие левой кнопки мыши на объекте. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

contextmenu

Вызов контекстного меню на элементе. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

dataloaderror

Во время загрузки данных произошла ошибка. Экземпляр класса Event.

dblclick

Двойное нажатие левой кнопки мыши на объекте. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

geometrychange

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

  • originalEvent: IEvent - оригинальное событие геометрии.

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

mapchange

Сменилась карта. Поля данных:

  • oldMap - старая карта;
  • newMap - новая карта.

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

mousedown

Нажатие кнопки мыши над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

mouseenter

Наведение курсора на объект. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

mouseleave

Вывод курсора за пределы объекта. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

mousemove

Перемещение курсора над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

mouseup

Отпускание кнопки мыши над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

multitouchend

Окончание мультисенсорного управления. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent.

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

multitouchmove

Повторящееся событие при мультисенсорном управлении. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent c информацией о прикосновениях. Определяет свойство touches, которое содержит список прикосновений. Каждое прикосновение описано объектом, которое содержит поля:

  • clientX - координата касания X относительно видимой области браузера;
  • clientY - координата касания Y относительно видимой области браузера;
  • pageX - координата касания X касания относительно начала документа;
  • pageY - координата касания Y касания относительно начала документа.

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

multitouchstart

Начало мультисенсорного управления. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent c информацией о прикосновениях. Определяет свойство touches, которое содержит список прикосновений. Каждое прикосновение описано объектом, которое содержит поля:

  • clientX - координата касания X относительно видимой области браузера;
  • clientY - координата касания Y относительно видимой области браузера;
  • pageX - координата касания X касания относительно начала документа;
  • pageY - координата касания Y касания относительно начала документа.

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

optionschange

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

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

overlaychange

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

  • overlay: IOverlay|null - ссылка на оверлей;
  • oldOverlay: IOverlay|null - предыдущий оверлей геообъекта.

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

parentchange

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

Поля данных:

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

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

propertieschange

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

  • originalEvent: IEvent - оригинальное событие менеджера данных.

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

wheel

Скролл мышкой. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Более детально описание в domEvent.manager.

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

Методы

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

Number[][]|null

Вычисляет границы области в геокоординатах, охватывающей все загруженные объекты в составе менеджера.

getMap()

Map

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

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

getObjectState(id)

Object

Получение информации о текущем состоянии объекта, добавленного в менеджер.

getOverlay()

vow.Promise

Возвращает объект-обещание, который подтверждается объектом оверлея в момент его фактического создания, либо отклоняется с передачей соответствующей ошибки.

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

getOverlaySync()

IOverlay|null

Метод предоставляет синхронный доступ к оверлею.

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

getParent()

IParentOnMap|null

Возвращает ссылку на родительский объект или null, если родительский элемент не был установлен.

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

getPixelBounds()

Number[][]|null

Вычисляет границы области в глобальных пиксельных координатах, охватывающей все загруженные объекты в составе менеджера.

getTileUrl()

String|null

Возвращает URL тайла с данными.

getUrlTemplate()

String

Возвращает URL шаблона данных.

reloadData()

Метод, удаляющий все загруженные ранее данные и отправляющий запрос за новыми данными.

setFilter(filterFunction)

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

setParent(parent)

IChildOnMap

Устанавливает родительский объект. Если передать значение null, то элемент управления будет только удален из текущего родительского объекта.

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

setUrlTemplate(urlTemplate)

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

clusters

Коллекция кластеров, сгенерированных менеджером.

Пример:

objectManager.clusters.events.add('click', function (e) {
    var objectId = e.get('objectId');
    objectManager.clusters.balloon.open(objectId);
});

objects

Коллекция объектов, добавленных в слой.

Пример:

objectManager.objects.events.add('click', function (e) {
    var objectId = e.get('objectId');
    objectManager.objects.balloon.open(objectId);
});

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

dataloaderror

Во время загрузки данных произошла ошибка. Экземпляр класса Event.

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

getBounds

{Number[][]|null} getBounds()

Вычисляет границы области в геокоординатах, охватывающей все загруженные объекты в составе менеджера.

Возвращает массив координат области или null, если менеджер не добавлен на карту.

getObjectState

{Object} getObjectState(id)

Получение информации о текущем состоянии объекта, добавленного в менеджер.

Возвращает объект со следующими полями:

  • found - признак, указывающий, существует ли объект с переданным идентификатором в загруженных данных. Тип: Boolean.
  • isShown - признак, указывающий, находится ли объект в видимой области карты. Тип: Boolean.
  • isFilteredOut - признак, указывающий, прошел ли объект фильтрацию. Если фильтр не задан или объект прошел фильтрацию, значение поля будет false. Тип: Boolean.
.

Параметры:

ПараметрЗначение по умолчаниюОписание
id *
[no-highlight[

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

]no-highlight]

Тип: Object

Идентификатор объекта, для которого нужно получить состояние.

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

Пример:

remoteObjectManager.setFilter('properties.type == "shop"');
...
if (!remoteObjectManager.getObjectState(7).isFilteredOut) {
    remoteObjectManager.objects.balloon.open(7);
}

getPixelBounds

{Number[][]|null} getPixelBounds()

Вычисляет границы области в глобальных пиксельных координатах, охватывающей все загруженные объекты в составе менеджера.

Возвращает массив координат области или null, если менеджер не добавлен на карту.

getTileUrl

{String|null} getTileUrl()

Возвращает URL тайла с данными.

Параметры:

ПараметрЗначение по умолчаниюОписание
parameters *
[no-highlight[

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

]no-highlight]

Тип:

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

Пример:

var objectManager = new ymaps.RemoteObjectManager('http://myServer.com/tile?bbox=%b');
objectManager.getTileUrl = function (parameters) {
   var boundingBox = parameters.boundingBox.join('~');
   return this.getUrlTemplate().replace(/%b/g, boundingBox);
};

getUrlTemplate

{String} getUrlTemplate()

Возвращает URL шаблона данных.

reloadData

{} reloadData()

Метод, удаляющий все загруженные ранее данные и отправляющий запрос за новыми данными.

setFilter

{} setFilter(filterFunction)

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

Параметры:

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

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

]no-highlight]

Тип: Function|String

функция-фильтр. Получает на вход единичный объект, добавленный в ObjectManager. Если функция возвращает true, объект будет обработан. Если false - объект будет исключен из дальнейшей обработки. Также в качестве фильтра можно передавать строку. В строке-фильтре доступны следующие ключевые слова:

  • options – обращение к опциям объекта;
  • properties – обращение к данным объекта;
  • geometry – обращение к геометрии объекта;
  • id – обращение к идентификатору объекта.
В качестве фильтра можно указывать выражение, возвращающее true или false.

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

Примеры:

1.

// Выберем объекты-кластеры, идентификаторы которых больше 100.
objectManager.setFilter('object.type == "Cluster" && id > 100');

2.

// На карте будут отображаться только объекты с заданными типами.
objectManager.setFilter('properties.type == "кафе" || properties.type == "аптека"');

3.

// Можно задавать функцию-фильтр.
objectManager.setFilter(function (object) {
    return object.properties.name != 'Тот, кого нельзя показывать.';
});

setUrlTemplate

{} setUrlTemplate(urlTemplate)

Параметры:

ПараметрЗначение по умолчаниюОписание
urlTemplate *
[no-highlight[

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

]no-highlight]

Тип: String

шаблон URL данных.

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