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 = new ymaps.Map('map', {
    center: [32.5, 68.9],
    zoom: 9
});
var geoBounds = [
    [[31.729958, 69.369182], [34.203324, 68.666473]],
// Murmansk
    [[82.179084, 55.341085], [83.725642, 54.670738]]
// Novosibirsk
];
var 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;
    var toGlobalPixels = projection.toGlobalPixels;
    var pixelBounds = [
        boundsFromPoints(
            toGlobalPixels(geoBounds[0][0], zoom),
            toGlobalPixels(geoBounds[0][1], zoom)
        ),
        boundsFromPoints(
            toGlobalPixels(geoBounds[1][0], zoom),
            toGlobalPixels(geoBounds[1][1], zoom)
        )
    ];
    // Расчет границ тайла.
    var leftTop = [tileNumber[0] * 256, tileNumber[1] * 256];
    var tileBounds = [leftTop, [leftTop[0] + 256, leftTop[1] + 256]];
    var intersects = ymaps.util.bounds.intersects;
    // Если пиксельные границы перекаются с границами указанной области,
    // нужно запросить дополнительные данные.
    if (intersects(pixelBounds[0], tileBounds) || (intersects(pixelBounds[
            1], tileBounds))) {
        return false;
    }
    // Для всех других тайлов этот источник не предоставляет данных.
    return true;
}

setKeyTemplate

{} setKeyTemplate(template)

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

Параметры:

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

Тип: String

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

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

setTileUrlTemplate

{} setTileUrlTemplate(template)

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

Параметры:

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

Тип: String

Шаблон URL

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