RemoteObjectManager
Расширяет ICustomizable, IEventEmitter, IGeoObject, IParentOnMap.
Менеджер объектов, осуществляющий их оптимальную подгрузку с сервера. Менеджер отправляет запросы за данными по указанному url в JSONP-формате. Описание формата соответствует формату добавляемых в ObjectManager объектов (см. ObjectManager.add). Также поддерживаются объекты типа 'Cluster', содержащие поля:
- type — тип объекта, для кластеров всегда 'Cluster';
- id - уникальный идентификатор кластера;
- geometry - геометрия кластера в JSON-формате;
- features - массив объектов в составе кластера. Необязательное поле;
- bbox — массив координат, описывающих прямоугольную область, содержащую все объекты в составе кластера;
- number - количество объектов в кластере;
- properties - данные кластера.
Данный модуль рассчитан на загрузку и отображение данных, предварительно обработанных на сервере. В частности, рекомендуется использовать модуль для отображения результатов серверной кластеризации. Данные перезапрашиваются заново при изменении коэффициента масштабирования карты. Модуль не осуществляет кластеризацию объектов или фильтрацию по области видимости на клиенте. Чтобы кластеризовать объекты после их загрузки на сторону клиента, используйте LoadingObjectManager. Обратите внимание, что у объектов, отрисованных на карте через данный менеджер, нельзя включать режимы редактирования и перетаскивания.
Конструктор | Поля | События | Методы
Конструктор
RemoteObjectManager(urlTemplate[, options])
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: String шаблон URL данных. Поддерживаются специальные конструкции по аналогии с Layer. Также поддерживаются подстановки:
|
|
— |
Тип: Object Опции.
|
|
256 |
Тип: Number Размер тайла для загрузки данных. |
|
'callback' |
Тип: Boolean Имя GET-параметра, который содержит значение jsonp-колбека. |
|
null |
Тип: String Шаблон для jsonp-колбека. Поддерживает те же подстановки, что и urlTemplate. Все символы, не являющиеся буквой или цифрой, будут заменены на '_'. Если параметр не задан, то имя jsonp-колбека будет сгенерировано автоматически. Примеры преобразований при tileNumber=[3, 1], zoom=9:
|
|
false |
Тип: Boolean Разделять запросы за данными на запросы за одиночными тайлами. По умолчанию запросы делаются за данными для прямоугольной области, содержащей несколько тайлов. |
|
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: 'Placemark balloon content',
iconContent: 'Placemark content'
},
options: {
preset: 'islands#yellowIcon'
}
},
{
type: 'Cluster',
id: 24,
bbox: [[35, 46], [46, 57]],
number: 34,
// Массив, описывающий 34 объекта в кластере.
// Необязательное поле;
// Если этот параметр опущен, то при щелчке по кластеру открывается пустой балун.
features: [{
type: 'Feature',
id: 512,
properties: {
balloonContent: 'Placemark balloon content',
clusterCaption: 'Placemark title in the cluster balloon'
},
// ...
],
geometry: {
type: 'Point',
coordinates: [40.5, 51]
},
properties: {
iconContent: 34
}
}
]
}
});
Поля
Имя |
Тип |
Описание |
Коллекция кластеров, сгенерированных менеджером. |
||
Менеджер событий. Унаследовано от IDomEventEmitter. |
||
IGeometry|null |
Геометрия геообъекта. Унаследовано от IGeoObject. |
|
Коллекция объектов, добавленных в слой. |
||
Менеджер опций. Унаследовано от ICustomizable. |
||
Данные геообъекта. Унаследовано от IGeoObject. |
||
Состояние геообъекта. Унаследовано от IGeoObject. |
События
Имя |
Описание |
Однократное нажатие левой кнопки мыши на объекте. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Вызов контекстного меню на элементе. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Во время загрузки данных произошла ошибка. Экземпляр класса Event. |
|
Двойное нажатие левой кнопки мыши на объекте. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Изменение геометрии геообъекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
Унаследовано от IGeoObject. |
|
Сменилась карта. Поля данных:
Унаследовано от IParentOnMap. |
|
Нажатие кнопки мыши над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Наведение курсора на объект. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Вывод курсора за пределы объекта. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Перемещение курсора над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Отпускание кнопки мыши над объектом. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
|
Окончание мультисенсорного управления. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent. Унаследовано от IDomEventEmitter. |
|
Повторящееся событие при мультисенсорном управлении. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent c информацией о прикосновениях. Определяет свойство touches, которое содержит список прикосновений. Каждое прикосновение описано объектом, которое содержит поля:
Унаследовано от IDomEventEmitter. |
|
Начало мультисенсорного управления. Данное событие доступно только на устройствах, которые поддерживают множественные сенсорные прикосновения. Возвращает реализацию интерфейса IMultiTouchEvent c информацией о прикосновениях. Определяет свойство touches, которое содержит список прикосновений. Каждое прикосновение описано объектом, которое содержит поля:
Унаследовано от IDomEventEmitter. |
|
Изменение в опциях объекта. Унаследовано от ICustomizable. |
|
Изменение оверлея геообъекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
Унаследовано от IGeoObject. |
|
Сменился родительский объект. Поля данных:
Унаследовано от IChild. |
|
Изменение данных геообъекта. Экземпляр класса Event. Имена полей, доступных через метод Event.get:
Унаследовано от IGeoObject. |
|
Скролл мышкой. При использовании следует иметь в виду, что при сенсорном вводе события мыши будут эмулироваться. Экземпляр класса MapEvent. Более детальное описание доступно в domEvent.manager. Унаследовано от IDomEventEmitter. |
Методы
Имя |
Возвращает |
Описание |
Number[][]|null |
Вычисляет границы области в геокоординатах, охватывающей все загруженные объекты в составе менеджера. |
|
getMap() |
Возвращает ссылку на карту. Унаследован от IParentOnMap. |
|
Object |
Получение информации о текущем состоянии объекта, добавленного в менеджер. |
|
Возвращает объект-обещание, который подтверждается объектом оверлея в момент его фактического создания, либо отклоняется с передачей соответствующей ошибки. Унаследован от IGeoObject. |
||
IOverlay|null |
Метод предоставляет синхронный доступ к оверлею. Унаследован от IGeoObject. |
|
IParentOnMap|null |
Возвращает ссылку на родительский объект или null, если родительский элемент не был установлен. Унаследован от IChildOnMap. |
|
Number[][]|null |
Вычисляет границы области в глобальных пиксельных координатах, охватывающей все загруженные объекты в составе менеджера. |
|
String|null |
Возвращает URL тайла с данными. |
|
String |
Возвращает URL шаблона данных. |
|
Метод, удаляющий все загруженные ранее данные и отправляющий запрос за новыми данными. |
||
Устанавливает функцию-фильтр для объектов. Фильтрует как одиночные объекты, так и кластеры. |
||
Устанавливает родительский объект. Если передать значение null, то элемент управления будет только удален из текущего родительского объекта. Унаследован от IChildOnMap. |
||
Описание полей
clusters
{objectManager.ClusterCollection} clusters
Коллекция кластеров, сгенерированных менеджером.
Пример:
objectManager.objects.events.add('click', function (e) {
var objectId = e.get('objectId');
objectManager.objects.balloon.open(objectId);
});
objects
{objectManager.ObjectCollection} 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 - признак, указывающий, существует ли объект с переданным идентификатором в загруженных данных. Type: Boolean.
- isShown - признак, указывающий, находится ли объект в видимой области карты. Type: Boolean.
- isFilteredOut - признак, указывающий, прошел ли объект фильтрацию. Если фильтр не задан или объект прошел фильтрацию, значение поля будет false. Type: Boolean.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
|
— |
Тип: 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 тайла с данными.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: |
* Обязательный параметр/опция.
Пример:
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)
Устанавливает функцию-фильтр для объектов. Фильтрует как одиночные объекты, так и кластеры.
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: Function|String функция-фильтр. Получает на вход единичный объект, добавленный в ObjectManager. Если функция возвращает true, объект будет обработан. Если false - объект будет исключен из дальнейшей обработки. Также в качестве фильтра можно передавать строку. В строке-фильтре доступны следующие ключевые слова:
|
* Обязательный параметр/опция.
Примеры:
1.
// Выбрать кластеры с id > 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)
Параметры:
Параметр |
Значение по умолчанию |
Описание |
— |
Тип: String шаблон URL данных. |
* Обязательный параметр/опция.
Обязательный параметр.