MBTiles 是一種地圖瓦片存儲的數據規范,它使用SQLite數據庫,可大大提高海量地圖瓦片的讀取速度,比通過瓦片文件方式的讀取要快很多,適用於Android、IPhone等智能手機的離線地圖存儲。詳情請參考:MBTiles移動存儲簡介。
在WEB地圖介紹中我們看到,瓦片是參照了他們的z/x/y 形式坐標,在磁盤存儲上,他們通常存儲在以z、x為名字上的目錄中,這樣就有一個瓦片文件路徑是0/0/0.png。

同樣用谷歌或百度地圖JS API很方便調用。但是有個缺點就是文件多了,占用磁盤空間比實際文件大很多,產生很多文件碎片,移動起來非常麻煩,速度慢。MBTiles提供了這樣一個功能:瓦片表,tiles:
sqlite> SELECT * FROM tiles; zoom_level | tile_column | tile_row | tile_data 5 | 13 | 23 | [PNG data] 5 | 13 | 24 | [PNG data] 5 | 14 | 23 | [PNG data] 5 | 14 | 24 | [PNG data] 5 | 15 | 25 | [PNG data]
這張表很容易查詢一張特定的瓦片:比如查詢級別為 8,列號為116,行號為192的瓦片數據:
sqlite> SELECT tile_data FROM tiles WHERE zoom_level = 8 AND tile_column = 116 AND tile_row = 192; [PNG data]
tile_data 為二進制的流文件,不管用在桌面程序還是Android、iOS應用都可以很方便的從Mbtiles數據庫里面讀取瓦片數據了。

以下是我用Delphi做的一個演示程序的截圖:



