hotspot.ObjectSource

Стандартная реализация интерфейса IHotspotObjectSource.
Примечание. Модуль является устаревшим. Он поддерживается в версии 2.1 для обратной совместимости. Используйте модуль hotspot.layer.ObjectSource.

См.: hotspot.layer.ObjectSource

Конструктор | Методы

Конструктор

hotspot.ObjectSource()

Методы

ИмяВозвращаетОписание
getKey(tileNumber, zoom)

String

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

getKeyTemplate()

String

Возвращает шаблон идентификатора тайла.

getTileUrl(tileNumber, zoom)

String

Возвращает URL данных для конкретного тайла.

getTileUrlTemplate()

String

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

parseResponse(layer, res, callback, tileNumber, zoom)

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

restrict(layer, tileNumber, zoom)

Boolean

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

setKeyTemplate(template)

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

setTileUrlTemplate(template)

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

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

getKey

{String} getKey(tileNumber, zoom)

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

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

Параметры:

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

Тип: Number[]

Номер тайла (тайловые координаты).

zoom *

Тип: Integer

Уровень масштабирования.

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

getKeyTemplate

{String} getKeyTemplate()

Возвращает шаблон идентификатора тайла.

getTileUrl

{String} getTileUrl(tileNumber, zoom)

Возвращает URL данных для конкретного тайла.

Параметры:

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

Тип: Number[]

Номер тайла (тайловые координаты).

zoom *

Тип: Integer

Уровень масштабирования.

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

Пример:

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 + '<codeph>&</codeph>x=' + tileNumber[0] + '<codeph>&</codeph>y=' + tileNumber[1]';
     }
};

getTileUrlTemplate

{String} getTileUrlTemplate()

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

parseResponse

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

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

Параметры:

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

Тип: hotspot.Layer

Слой, которому принадлежат объекты.

res *

Тип: Object

Ответ сервера.

callback *

Тип: Function

Функция-обработчик.

tileNumber *

Тип: Number[]

Номер тайла, для которого пришел ответ.

zoom *

Тип: Number

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

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

restrict

{Boolean} restrict(layer, tileNumber, zoom)

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

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

Параметры:

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

Тип: hotspot.Layer

Слой активных областей.

tileNumber *

Тип: Number[]

Номер тайла.

zoom *

Тип: Integer

Уровень масштабирования.

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

Пример:

// Пример переопределения метода restrict
// Предположим, что имеются данные только по Мурманску и Новосибирску.
var myMap = новые ymaps.Карта ('map', {center: [32.5, 68.9], масштаб: 9});
var geoBounds = [
    [[31.729958, 69.369182], [34.203324, 68.666473]], // Мурманск
    [[82.179084, 55.341085], [83.725642, 54.670738]] // Новосибирск
];
проекция var = myMap.опционы.сделать ("проекция");
ВАР myHotspotSource = новый ymaps.точка.Обожествляются('http://www.myDomain.ru/tiles/?%c', '%c');

myHotspotSource.restrict = функция (слой, tileNumber, масштаб) {
    // Вычисление границ пикселей городов для данного уровня масштабирования.
    var boundsFromPoints = ymaps.util.границы.fromPoints;
    var toGlobalPixels = проекция.toGlobalPixels;
    var pixelBounds = [
        boundsFromPoints(
            toGlobalPixels(geoBounds[0][0]], зум),
            toGlobalPixels(geoBounds[0][1]], зум)
        ),
        boundsFromPoints(
            toGlobalPixels(geoBounds[1][0]], зум),
            toGlobalPixels(geoBounds[1][1]], зум)
        )
    ];

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

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

setKeyTemplate

{} setKeyTemplate(template)

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

Параметры:

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

Тип: String

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

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

setTileUrlTemplate

{} setTileUrlTemplate(template)

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

Параметры:

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

Тип: String

Шаблон URL

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