如何将样式添加到.mbtiles文件中



我从Open Street Map下载了一个付费的.mbtiles文件,并通过Kitematic使用openmaptiles服务器创建了漂亮的地图。

然而,我想在我正在编写的基于Android的应用程序中使用这个.mbtiles文件作为tile的离线存储库。

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

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

我的问题是如何在我的项目中添加样式信息,如"OSM Bright"或"Klokantech Basic",使我的应用程序上的地图看起来像一个合适的地图

非常感谢

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

什么是mbtiles文件

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

mbtiles文件的大小与tiles的大小

MBtiles文件大小应该与MBtiles服务器上所有生成文件的总体大小几乎相同(每个缩放级别中的tile数量相同,每个tile中的像素数量相同(。如果你看到了显著的差异,这可能意味着你的mbtiles文件不包含相同的缩放范围(例如,它实际上不包含那些最详细的缩放级别(,或者它包含更小的区域。一些差异也可能是由所包含位图的压缩算法引起的,在这里瓦片的实际样式可能起到一定作用(一些位图可能更容易压缩,生成的PNG可能更小

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

如果您想探索下载的mbtiles文件中实际包含的内容,请尝试此工具。

解决方案

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

一种可能的解决方案是使用矢量图。实际上,从Openstreetmap数据生成矢量瓦片是可能的。这样的瓷砖在设备上渲染,实际上也可以在设备上设置样式。

不幸的是,在撰写本文(AFAIK(时,Osmdroid库不支持向量瓦片。您必须选择不同的贴图渲染库。

最新更新