Клуб API Карт

Произвольный <canvas> в качестве тайла

Пост в архиве.

Привет!

Хочу сделать что-то подобное http://julia-map.appspot.com/ но с использованием API отечественных карт. По сути мне нужно добиться от tileUrlTemplateвот такого интерфейса:


/**
* @param {Number[]} tileNumber Array of two numbers, the tile numbers on x and y.
* @param {Number} tileZoom Zoom level
* @returns {HTMLCanvasElement}
*/


Видел наличие  layer.tile.CanvasTile, но не понял как его использовать :(

Очень хочу получить пример минимально иллюстрирующий решение мой проблемы.

3 комментария
Sergey Konstantinov
28 января 2016, 00:53
Канвасные тайлы не будут работать или будут тормозить в некоторых браузерах. Тебя это устраивает?
Да, этим можно пожертвовать.

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

У слоя Layer есть вот такие опции 

* @param {Function} [options.tileContainerClass] Класс контейнера тайлов.

     * Для браузеров Firefox и Chrome стандартный контенейнер - layer.tileContainer.CanvasContainer,

     * для остальных layer.tileContainer.DomContainer. Тип контейнера выставляется динамически

     * при инициализации АПИ. Т.е. если нужно, чтобы карта во всех браузерах отображалась

     * через DOM-тайлы, нужно загрузить модули layer.tileContainer.DomContainer, layer.tile.DomTile

     * и задать карте опцию map.options.set({ 'layerTileContainerClass': 'default#dom' }).

 

Ну соответственно если нужны канвасные тайлы, то надо указывать 'default#canvas' и подгружать соответствующие модули - 

layer.tileContainer.CanvasContaner (если реализация тайла своя, то layer.tile.CanvasTile подгружать не надо).

А дальше надо написать свой класс ICanvasTile и задать его через опцию tileClass в экземпляр Layer