Как добавить стиль в файл .mbtiles - PullRequest
0 голосов
/ 31 октября 2018

Я загрузил платный файл .mbtiles с Open Street Map и сумел создать красивые карты, используя openmaptiles-server поверх Kitematic.

Однако я хотел бы использовать этот файл .mbtiles в качестве автономного хранилища плиток в приложении для Android, которое я пишу.

Я планирую сохранить файл mbtiles на SD-карте и позволить osmdroid MapView читать его оттуда.

Однако файл сам по себе не содержит (по-видимому ..) информацию о стилях.

У меня вопрос, как мне добавить информацию о стилях, такую ​​как "OSM Bright" или "Klokantech Basic", в мой проект, чтобы карта в моем приложении выглядела как правильная карта

Большое спасибо

1 Ответ

0 голосов
/ 01 ноября 2018

Невозможно отобразить растровые плитки на устройстве только из информации, содержащейся в файле данных mbtiles.

Что такое файл mbtiles?

Файл mbtiles - это просто база данных SQLite, которая содержит очень небольшое количество метаданных и отрисованных растровых изображений - плиток. Это те же самые растровые файлы, которые вы бы обслуживали в режиме онлайн с вашего сервера openmaptiles.

Размер файла mbtiles в зависимости от размера плитки

Размер файла MBtiles должен быть почти таким же, как общий размер всех сгенерированных файлов на вашем сервере mbtiles (это одинаковое количество плиток на каждом уровне масштабирования и одинаковое количество пикселей в каждой плитке). Если вы видите существенную разницу, это может означать, что ваш файл mbtiles не содержит такой же диапазон масштабирования (например, он не содержит этих наиболее подробных уровней масштабирования) или содержит меньшую область. Некоторое различие может быть также вызвано алгоритмом сжатия содержащихся растровых изображений, и здесь фактическая стилизация плиток может играть определенную роль (некоторые растровые изображения могут быть проще сжать, в результате чего PNG может быть меньше.

Также возможно, что файл mbtiles на самом деле содержит другой формат изображения (jpeg).

Если вы хотите узнать, что на самом деле содержится в загруженном файле mbtiles, попробуйте этот инструмент .

Решение

Я не думаю, что есть решение, когда вам нужно использовать растровые плитки. Вам нужно либо сгенерировать их на сервере и загрузить их по сети, либо вам нужно предварительно отрендерить их, упаковать в файл mbtile и каким-то образом загрузить его на устройство.

Одним из возможных решений было бы использование векторных карт. Фактически возможно генерировать векторные листы из данных Openstreetmap. Такие листы затем отображаются на устройстве, и их также можно стилизовать на устройстве.

К сожалению, библиотека Osmdroid не поддерживает векторные плитки на момент написания (AFAIK). Вы должны будете выбрать другую библиотеку рендеринга карты.

...