Базовые карты, или их части, которые не так часто изменяются и долгое время остаются актуальными, как правило, кэшируют. Тайловые сервисы отрисовываются быстрее динамических. Построение карты и ее кэширование — трудоемкий процесс, и как же бывает обидно, когда после всех усилий по подготовке проекта карты, в итоговом сервисе мы видим «проталины и прогалины» — неприятные артефакты, которые явно портят общую картину. Как избежать этой неприятности? Как сделать, чтобы карта радовала скоростью прорисовки и качеством картинки?
Предупрежден — значит вооружен. Нужно помнить, что придется опубликовать сервис и перестроить тайлы, как минимум два раза. Первый раз, чтобы обнаружить артефакты. Дальнейшую историю назовем — тестирование кэша.
В каких случаях могут возникнуть артефакты.
- Когда разные масштабные уровни собраны из данных в различных территориальных границах.
- Когда границы не похожи на прямоугольник.
- Когда слои выходят за общие границы карты.
Как следует рассмотрев схему тайлов, я заметила, что на самом деле слой кэша — это не один масштаб, а диапазон масштабов, и сервис отрисовывает тайлы мелкого масштаба в пустых местах крупного масштаба, Хотя мы этого и не задавали в проекте карты.
Придется создать дополнительные данные:
- Граница карты.
- Граница данных для масштаба, границы которого отличаются от границы карты.
- Граница тайлов для определенного масштаба. Граница тайлов — не равна границе данных. И не обязана быть равной границе карты (прогалины).
- Маска — слой, который будет закрашивать места между границей данных и границей тайлов (проталины).
- Маскирующий растр размером и форматом, как определено в кэшированном сервисе. Чтобы автоматически замаскировать пустые места, где не сформировались тайлы кэша. Фон растра и слой Маски надо сделать одного цвета. Тогда маскирующий слой будет выглядеть органично рядом с пустыми тайлами.
Умело используя этот набор дополнительных данных, вы обязательно достигните должного качества карты.
Дополнительные границы на примере реального проекта.


