0

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

 MapView.getBoundingBox

这仅返回屏幕上显示的地图边界框。我需要读取整个离线 .Mbtiles 地图文件的边界框。

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

4

1 回答 1

0

AFAIK,MBTiles 只是一个具有不同扩展名的 Sqlite 数据库。这意味着您可以进行一些查询,例如

select max(z) from tiles;//最大缩放级别

select min(z) from tiles;//最小缩放级别

获得边界有点棘手,因为您必须从 X、Y 坐标系转换为纬度/经度(这就是您想要的,对吗?)

运行上面相同的查询以获取最小/最大 X 和 Y 值。然后运行 ​​OSM wiki 上发布的算法之一,例如这个 http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_bounding_box 以转换回 Lat/Lon。

我很确定这已经在 OsmDroid 中实现了,所以你只需要一个函数调用。

于 2015-07-23T11:37:14.947 回答