我正在寻找一种方法来阅读我的离线MBtiles,并在运行时的纬度和经度方面找到边界框。我不想硬编码边界框。我希望能够从MBTiles文件中读取并根据左上角和右下角的lat和long值找出中心。它假设地图是矩形的(这是一个很好的假设)。这是简单的三角点计算。
MapView.getBoundingBox
这只返回屏幕上显示的地图边界框。我需要阅读整个Offline .Mbtiles地图文件的边界框。
另外,我如何在运行时读取.mbtiles文件的最大缩放和最小缩放?
答案 0 :(得分:0)
AFAIK,MBTiles只是一个具有不同扩展名的Sqlite数据库。这意味着您可以执行一些查询,例如
select max(z) from tiles;
//最大缩放级别
select min(z) from tiles;
//缩放级别
由于你必须从X,Y坐标系转换为Lat / Lon(这就是你想要的,对吧?)
让它变得有点棘手运行上面相同的查询以获取最小/最大X和Y值。然后运行OSM wiki上发布的一个算法,例如这个 http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_bounding_box 转回Lat / Lon。
我很确定这已经在OsmDroid中实现了,所以你只需要一个函数调用。