OSMDroid离线MBTiles边界框在运行时的纬度和经度

时间:2015-07-22 01:26:09

标签: java android openstreetmap osmdroid mbtiles

我正在寻找一种方法来阅读我的离线MBtiles,并在运行时的纬度和经度方面找到边界框。我不想硬编码边界框。我希望能够从MBTiles文件中读取并根据左上角和右下角的lat和long值找出中心。它假设地图是矩形的(这是一个很好的假设)。这是简单的三角点计算。

 MapView.getBoundingBox

这只返回屏幕上显示的地图边界框。我需要阅读整个Offline .Mbtiles地图文件的边界框。

另外,我如何在运行时读取.mbtiles文件的最大缩放和最小缩放?

1 个答案:

答案 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中实现了,所以你只需要一个函数调用。