MBTiles 離線地圖演示 - 基於 Google Maps JavaScript API v3 + SQLite

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

       

一樣用谷歌或百度地圖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的瓦片數據:spa

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作的一個演示程序的截圖:

相關文章
相關標籤/搜索