---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/llms.txt


# hotspot.ObjectSource

Расширяет [IHotspotObjectSource](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md).

Стандартная реализация интерфейса [IHotspotObjectSource](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md). Работает со стандартным форматом ответа сервера.

## Конструктор {#constructor}

```javascript
hotspot.ObjectSource(tileUrlTemplate[, keyTemplate-Function[, options]])
```

Возвращает источник данных для слоя активных областей.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `tileUrlTemplate`[*](*parametr) | — | Тип: String\|Function

Шаблон URL данных, соответствующих тайлу. Поддерживаются специальные конструкции и возможность использования функции по аналогии с [Layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/Layer.md). ||
|| `keyTemplate-Function` | — | Тип: String

Шаблон идентификатора тайла. Используется для формирования padding в jsonp-запросе за данными. Задается по аналогии с предыдущим параметром. Все символы, не являющиеся буквой, цифрой или символом '_', будут заменены на '_'. Если параметр не задан, то padding запроса будет сгенерирован автоматически. Примеры преобразований при 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' ||
|| `options` | — | Тип: Object

Опции источника данных. ||
|| `options.bounds` | null | Тип: Bounds

Область на карте, для которой есть данные или null, если данные есть везде. Опция для стандартной реализации метода restrict. ||
|| `options.maxZoom` | 0 | Тип: Bounds

Максимальный уровень масштабирования, для которого делаются запросы за данными. Опция для стандартной реализации метода restrict. ||
|| `options.minZoom` | 0 | Тип: Bounds

Минимальный уровень масштабирования, для которого делаются запросы за данными. Опция для стандартной реализации метода restrict. ||
|| `options.noCache` | false | Тип: Boolean

false - использовать встроенный кэш браузера, true - не использовать (к каждому URL будет автоматически приписываться случайный GET-параметр, чтобы исключить кэширование тайлов браузером). ||
|#

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

**Пример:**

```javascript
// Пример стандартного формата ответа сервера
hotspot_callback({
    // ответ может содержать поля "data" или "error".
    "data": {
        "type": "FeatureCollection",
        // Массив хотспотных объектов.
        "features": [{
            "type": "Feature",
            // Данные объекта.
            // Передаются в конструктор hotspot.Shape в качестве данных.
            "properties": {
                "hintContent": "Содержимое текстовой подсказки.",
                "balloonContentBody": "Содержимое балуна.",
                "balloonContentHeader": "Заголовок балуна.",
                "balloonContentFooter": "Нижняя часть балуна.",
                // Можно задавать свойство balloonContent вместо Body/Header/Footer

                // Обязательное поле, описывающее hotspot.Shape.
                "HotspotMetaData": {
                    // Идентификатор хотспотного объекта.
                    // hotspot.Shape.getId по умолчанию возвращает значение этого поля.
                    "id": 10469893,
                    "zIndex": 10,
                    // Данные, на основе которых создается геометрия hotspot.Shape.
                    // Обязательное поле.
                    // Стандартная реализация позволяет передавать следующие типы геометрий:
                    //    "Rectangle" - прямоугольник.
                    //      Будет создана геометрия geometry.pixel.Rectangle.
                    //    "Polygon" - многоконтурный многоугольник.
                    //      Будет создана геометрия geometry.pixel.Polygon.
                    //    "MultiPolygon" - сложная фигура, состоящая из нескольких многоконтурных многоугольников.
                    //      Будет создана геометрия geometry.pixel.MultiPolygon.
                    //    "ConvexPolygon" - многоконтурный многоугольник. Все контуры должны быть выпуклыми.
                    //       Работает быстрее, чем "Polygon".
                    //       Будет создана геометрия geometry.pixel.Polygon.
                    //    "MultiConvexPolygon" - сложная фигура, состоящая из нескольких многоконтурных многоугольников.
                    //      Все контуры должны быть выпуклыми. Работает быстрее, чем "MultiPolygon".
                    //      Будет создана геометрия geometry.pixel.MultiPolygon.
                    "RenderedGeometry": {
                        "type": "Polygon",
                        // координаты передаются в пиксельных координатах, отсчитываемых от верхнего левого угла тайла.
                        "coordinates": [
                            // Первый контур многоугольника.
                            [
                                [-315, 280], [32, 442], [141, 208], [-206, 46], [-315, 280]
                            ],
                            // Второй контур многоугольника.
                            [
                                [-186, 155], [-238, 265], [-152, 306], [-100, 196], [-186, 155]
                            ]
                        ]
                    }
                }
            },
            // Реальная геометрия объекта.
            // Необязательное поле.
            // Передается в hotspot.Shape и доступна через метод hotspot.Shape.getGeometry.
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    // Первый контур многоугольника.
                    [
                        [29.176096525, 40.904183940],
                        [29.177027467, 40.903854324],
                        [29.177319900, 40.904329679],
                        [29.176389040, 40.904659406],
                        [29.176096525, 40.904183940]
                    ],
                    // Второй контур многоугольника.
                    [
                        [29.176442530, 40.904437683],
                        [29.176303055, 40.904213830],
                        [29.176533525, 40.904131168],
                        [29.176673032, 40.904355010],
                        [29.176442530, 40.904437683]
                    ]
                ]
            }
        },
        {
            "type": "Feature",
            "properties": {
                // описание следующего хотспотного объекта...
            }
        }]
    }
});
```

## Поля {#fields}

#|
|| **Имя** | **Тип** | **Описание** ||
|| [options](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#options) | [IOptionManager](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IOptionManager.md) | Менеджер опций.

Унаследовано от [ICustomizable](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#options). ||
|#

## События {#events}

#|
|| **Имя** | **Описание** ||
|| [optionschange](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#optionschange) | Изменение в опциях объекта.

Унаследовано от [ICustomizable](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICustomizable.md#optionschange). ||
|#

## Методы {#method}

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [cancelLastRequest](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#cancelLastRequest)() |  | Отменяет последний запрос за данными.

Унаследован от [IHotspotObjectSource](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#cancelLastRequest). ||
|| [getKey](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getKey)([tileNumber](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getKey-param-tileNumber), [zoom](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getKey-param-zoom)) | String | Возвращает имя callback-функции (padding) в jsonp-запросе, если оно статическое, либо null, если можно использовать динамический jsonp-callback. Шаблоны поддерживают те же подстановки, что и в шаблоне url тайла. Все символы, не являющиеся буквой, цифрой или символом '_', будут заменены на '_'. ||
|| [getKeyTemplate](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getKeyTemplate)() | String | Returns шаблон идентификатора тайла. ||
|| [getTileUrl](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getTileUrl)([tileNumber](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getTileUrl-param-tileNumber), [zoom](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getTileUrl-param-zoom)) | String | Returns URL данных для конкретного тайла. ||
|| [getTileUrlTemplate](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#getTileUrlTemplate)() | String | Returns шаблон URL данных для тайла. ||
|| [parseResponse](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse)([layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse-param-layer), [res](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse-param-res), [callback](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse-param-callback), [tileNumber](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse-param-tileNumber), [zoom](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#parseResponse-param-zoom)) |  | Разбирает ответ сервера. Возвращает в callback массив объектов-активных областей, сформированных по json-описанию. ||
|| [requestObjects](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects)([layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects-param-layer), [tileNumber](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects-param-tileNumber), [zoom](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects-param-zoom), [callback](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects-param-callback)) |  | [IHotspotShape](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotShape.md), соответствующих определенному слою, тайлу и коэффициенту масштабирования карты, и передает его в функцию callback.

Унаследован от [IHotspotObjectSource](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/IHotspotObjectSource.md#requestObjects). ||
|| [restrict](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#restrict)([layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#restrict-param-layer), [tileNumber](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#restrict-param-tileNumber), [zoom](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#restrict-param-zoom)) | Boolean | Метод, который вызывается перед тем, как отправить запрос за данными для тайла. Если метод возвращает true, то запрос на сервер посылаться не будет, и в качестве ответа вернется пустой массив объектов. ||
|| [setKeyTemplate](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#setKeyTemplate)([template](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#setKeyTemplate-param-template)) |  | Задает новый шаблон идентификатора тайла. ||
|| [setTileUrlTemplate](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#setTileUrlTemplate)([template](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.ObjectSource.md#setTileUrlTemplate-param-template)) |  | Задает новый шаблон URL данных для тайла. ||
|#

## Описание методов {#description-methods}

### getKey

```javascript
{String} getKey(tileNumber, zoom)
```

Возвращает имя callback-функции (padding) в jsonp-запросе, если оно статическое, либо null, если можно использовать динамический jsonp-callback. Шаблоны поддерживают те же подстановки, что и в шаблоне url тайла. Все символы, не являющиеся буквой, цифрой или символом '_', будут заменены на '_'.

**Returns** идентификатор тайла. Используется при формировании padding в jsonp-запросе за данными.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `tileNumber`[*](*parametr) | — | Тип: Number[]

Номер тайла (тайловые координаты). ||
|| `zoom`[*](*parametr) | — | Тип: Integer

Уровень масштаба. ||
|#

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

### getKeyTemplate

```javascript
{String} getKeyTemplate()
```

**Returns** шаблон идентификатора тайла.

### getTileUrl

```javascript
{String} getTileUrl(tileNumber, zoom)
```

**Returns** URL данных для конкретного тайла.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `tileNumber`[*](*parametr) | — | Тип: Number[]

Номер тайла (тайловые координаты). ||
|| `zoom`[*](*parametr) | — | Тип: Integer

Уровень масштаба. ||
|#

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

**Пример:**

```javascript
var hotspotObjectSource = new ymaps.hotspot.ObjectSource('dataSource/?%c');
hotspotObjectSource.getTileUrl = function (tileNumber, zoom) {
    if (zoom > 10) {
        // Для крупных масштабов используем выставленный путь к данным.
        return ymaps.hotspot.ObjectSource.prototype.call(this, tileNumber, zoom);
     } else {
        // Для мелких масштабов используем другой путь.
        return 'otherSource/getHotspots.xml?z=' + zoom + '`&`x=' + tileNumber[0] + '`&`y=' + tileNumber[1]';
     }
};
```

### getTileUrlTemplate

```javascript
{String} getTileUrlTemplate()
```

**Returns** шаблон URL данных для тайла.

### parseResponse

```javascript
{} parseResponse(layer, res, callback, tileNumber, zoom)
```

Разбирает ответ сервера. Возвращает в callback массив объектов-активных областей, сформированных по json-описанию.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `layer`[*](*parametr) | — | Тип: [hotspot.Layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.Layer.md)

Слой, которому принадлежат объекты. ||
|| `res`[*](*parametr) | — | Тип: Object

Ответ сервера. ||
|| `callback`[*](*parametr) | — | Тип: Function

Функция-обработчик. ||
|| `tileNumber`[*](*parametr) | — | Тип: Number[]

Номер тайла, для которого пришел ответ. ||
|| `zoom`[*](*parametr) | — | Тип: Number

Коэффициент масштабирования, для которого пришел ответ. массива объектов. ||
|#

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

### restrict

```javascript
{Boolean} restrict(layer, tileNumber, zoom)
```

Метод, который вызывается перед тем, как отправить запрос за данными для тайла. Если метод возвращает true, то запрос на сервер посылаться не будет, и в качестве ответа вернется пустой массив объектов. Стандартная реализация метода проверяет, лежит ли параметр zoom в пределах [options.minZoom, options.maxZoom]. А также проверяет, попадает ли центр запрашиваемого тайла в указанные options.bounds. Если options.bounds=null, то проверка для этого параметра не осуществляется.

**Returns** true - тайл вышел за пределы области данных (для данного тайла данных нет), false - не вышел (данные есть).

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `layer`[*](*parametr) | — | Тип: [hotspot.Layer](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/hotspot.Layer.md)

Слой активных областей. ||
|| `tileNumber`[*](*parametr) | — | Тип: Number[]

Номер тайла. ||
|| `zoom`[*](*parametr) | — | Тип: Integer

Коэффициент масштабирования. ||
|#

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

**Пример:**

```javascript
// Пример переопределения метода restrict
// Допустим, что данные есть только для Мурманска и Новосибирска.
var myMap = new ymaps.Map('map', {center: [32.5, 68.9] , zoom: 9}),
    geoBounds = [
         [[31.729958, 69.369182], [34.203324, 68.666473]], // Мурманск
         [[82.179084, 55.341085], [83.725642, 54.670738]]  // Новосибирск
    ],
    projection = myMap.options.get('projection');

var myHotspotSource = new ymaps.hotspot.ObjectSource('http://www.myDomain.ru/tiles/?%c', '%c');
myHotspotSource.restrict = function(layer, tileNumber, zoom) {

   // Вычислим пиксельные границы городов для данного уровня масштабирования.
   var boundsFromPoints = ymaps.util.bounds.fromPoints,
       toGlobalPixels = projection.toGlobalPixels,
       pixelBounds = [
           boundsFromPoints(
               toGlobalPixels(geoBounds[0][0]], zoom),
               toGlobalPixels(geoBounds[0][1]], zoom)
           ),
           boundsFromPoints(
               toGlobalPixels(geoBounds[1][0]], zoom),
               toGlobalPixels(geoBounds[1][1]], zoom)
           )
       ],

       // Вычислим пиксельные границы тайла
       leftTop = [tileNumber[0] * 256, tileNumber[1] * 256],
       tileBounds = [leftTop, [leftTop[0] + 256, leftTop[1] + 256]],
       intersects = ymaps.util.bounds.intersects;
   // Если пиксельные границы тайла пересекаются с пиксельными границами указанных областей,
   // то нужно будет отправить запрос за данными
   if (intersects(pixelBounds[0], tileBounds) || (intersects(pixelBounds[1], tileBounds)) {
         return false;
   }

   // Для всех остальных тайлов данных у этого источника нет.
   return true;
}
```

### setKeyTemplate

```javascript
{} setKeyTemplate(template)
```

Задает новый шаблон идентификатора тайла.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `template`[*](*parametr) | — | Тип: String

Шаблон идентификатора. ||
|#

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

### setTileUrlTemplate

```javascript
{} setTileUrlTemplate(template)
```

Задает новый шаблон URL данных для тайла.

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание** ||
|| `template`[*](*parametr) | — | Тип: String

Шаблон идентификатора. ||
|#

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

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