Клуб API Карт

Нестандартный размер тайлов

hhrhhr
7 февраля 2017, 03:06

Обязательно ли использовать тайлы размером 256x256 точек? Можно ли работать с 1024x1024, например?

Сходу указав tileSize: [1024, 1024] получил работающим только нулевой уровень.

12 комментариев
должно работать.
соберите минимальный пример, воспроизводящий проблему
Обновлено 8 февраля 2017, 17:35
dimik,
https://tech.yandex.ru/maps/jsbox/2.1/custom_map
просто добавить опцию в конструктор слоя...


  notFoundTile: TILES_PATH + '/2/0-0.jpeg',
+ tileSize: [512, 512]


...и всё, отображается либо один тайл, либо вообще ничего. Однако если указать размер меньше чем 256, то поведение вполне ожидаемое. К слову, физический размер тайлов особо не влияет, если размер в конструкторе указан <256, то отображаются, если больше — начинается что-то непонятное.
hhrhhr,
спасибо, мы посмотрим в чем там проблема. Я отпишу в этом треде

Если я все правильно поняла, то логика такая.
1) на нулевом масштабе мир имеет размер 256 на 256 пикселей. Соответственно на этом мастштабе тайлы 512x512 не имеют смысла.
2) Исходя из п.1 делаем стартовым зум=1
3) Дальше сдвигаем запрос за тайлами на 1 зум - если просят тайлы для 1 зума, ходим за тайлами для 0го зума. (При зуме 1 и тайлах 512x512 один тайл как раз накроет весь мир).
http://jsfiddle.net/4n3f3kf3/
mari-na-bzzz,
на нулевом масштабе мир должен иметь размер tileSize[0] на tileSize[1] пикселей. Либо цифра 256 где-то намертво прописана в коде, либо документация ошибается.
hhrhhr,
а можете прислать, где это прописано в документации?
Вот тут явно говорится о том, что карта всегда оперирует тайлами 256x256
https://tech.yandex.ru/maps/doc/theory/concepts/coordinates-docpage/
mari-na-bzzz,
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Layer-docpage/#param-options.tileSize

hhrhhr,
там написано, что опция отвечает за размер тайла слоя. На одной карте могут быть несколько слоев с разными tileSize. Карта при этом всегда оперирует размером 256 на 256
mari-na-bzzz,
да пусть оперирует, я совершенно не против. Как использовать тайлы размером 1000x1000, например? Или заявленные в документации тайлы "не обязательно в виде равных квадратов"?


Я теряюсь в догадках, для чего нужны слои с разным размером тайлов на одной карте, однако в моем случае даже 1000x1000 на экран влезает минимум 9 штук. Один большой тайл занимает меньше места (и грузится быстрее), чем 4 тайла вдвое меньшего разрешения. Про векторные данные можно не упоминать. В общем, жёстко зашитая константа времён прошлого века это не есть хорошо.
hhrhhr,
вы можете использовать тайлы 1000 на 1000, просто в коде везде подмените условно 4й зум на 1й и все
Я же выше кинула ссылку на пример, где карта валидно работает с тайлами 512 на 512
mari-na-bzzz,
добавляем в конец Placemark в нулевых координатах, изменяем tileSize на некратный 256 и видим, как центр карты становится не совсем центром.



hhrhhr,
все, я поняла проблему. Да, чтобы тайлы покрывали корректно всю карту, нужно, чтобы их размер был равен 2ˆN. К сожалению, в текущей архитектуре только так.