如何在.mbtiles文件中添加样式

时间:2018-10-31 15:29:27

标签: android styles osmdroid mbtiles

我从Open Street Map下载了一个付费的.mbtiles文件,并设法通过Kitematic使用openmaptiles-server创建了精美的地图。

但是,我想将此.mbtiles文件用作我正在编写的基于Android的应用程序中的图块的离线存储库。

我的计划是将mbtiles文件存储在SD卡上,然后让osmdroid MapView从那里读取它。

但是,文件本身(显然不包含)样式信息。

我的问题是如何向我的项目中添加样式信息,例如“ OSM Bright”或“ Klokantech Basic”,以使应用程序上的地图看起来像是正确的地图

非常感谢

1 个答案:

答案 0 :(得分:0)

仅从mbtiles数据文件中包含的信息就无法在设备上渲染位图图块。

什么是mbtiles文件?

mbtiles文件只是一个SQLite数据库,其中包含少量的元数据和渲染的位图图像-切片这些是您将要从openmaptiles服务器在线提供的相同位图文件。

mbtiles文件的大小与图块的大小

MBtiles文件大小应与mbtiles服务器上所有已生成文件的整体大小几乎相同(每个缩放级别中的瓦片数相同,每个瓦片中的像素数相同)。如果您发现差异很大,则可能表示您的mbtiles文件没有相同的缩放范围(例如,实际上没有包含最详细的缩放级别)或区域较小。所包含的位图的压缩算法也可能导致一些差异,并且此处图块的实际样式可能会起作用(某些位图可能更易于压缩,生成的PNG可能更小。

mbtiles文件实际上可能包含另一种图像格式(jpeg),这也是可能的。

如果您想浏览下载的mbtiles文件中实际包含的内容,try this tool

解决方案

当您需要使用位图图块时,我认为没有解决方案。您需要在服务器上生成它们并通过网络下载它们,或者需要预渲染它们并打包成mbtile文件,然后以某种方式将其下载到设备上。

一种可能的解决方案是使用向量图。实际上,可以从Openstreetmap数据生成矢量图块。然后,此类图块将在设备上渲染,并且实际上也可以在设备上设置样式。

不幸的是,Osmdroid库在编写本文时(AFAIK)不支持矢量切片。您将不得不选择其他地图渲染库。