2015-07-22 44 views
0

我正在尋找一種方法來閱讀我的離線MBtiles並在運行時在緯度和經度方面找到邊界框。我不想對邊界框進行硬編碼。我希望能夠從MBTiles文件讀取並根據左上角和右下角的緯度和長度值來確定中心。它假定地圖是矩形的(這是一個很好的假設)。這是簡單的觸發中點計算。OSMDroid離線MBTiles邊界框經緯度在運行時

MapView.getBoundingBox 

這隻返回屏幕上顯示的地圖邊界框。我需要閱讀整個Offline .Mbtiles地圖文件的邊界框。

另外,如何在運行時讀取.mbtiles文件的最大縮放和最小縮放?

+0

您是否閱讀過[規範](https://github.com/mapbox/mbtiles-spec/blob/master/1.1/spec.md)? –

回答

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 以轉換回緯度/經度。

我很確定這已經在OsmDroid中實現了,所以你需要的只是一個函數調用。

+0

我想要經緯度.. – user914425