2011-10-03 98 views
3

我真的需要一些OSMdroid庫的幫助。將地圖存儲在SD卡中作爲zip文件很有用。此外,地圖可以解壓縮,圖像文件可以直接用於更快的渲染。OSMdroid:如何從zip壓縮文件加載離線地圖 - MapTileFileArchiveProvider

我設法從我的SD卡裝載磚時磚unziiped,有.tile擴展存儲文件夾/SD卡/ osmdroid /瓷磚/ Mapnik的/ ... 要創建我的地圖我使用了Mobile Atlas CreatorOSMAND瓷磚存儲格式。

我在網上看了一些教程,聲稱存儲包含磁貼的zip文件存儲在/sdcard/osmdroid,那麼離線地圖將從zip文件中加載。但它不適合我。

  1. 有沒有人設法使它工作?如果是這樣如何?

  2. 我是否需要實例化我自己的MapTileFileArchiveProvider?如果是這樣,我該怎麼做?任何例子?

+1

嗨,u能發佈2個簡單樣品 - 1,用於存儲用於檢索它的地圖和1? – ofirbt

+1

你能提供樣品代碼:) – usman

回答

6

在ZIP中的文件需要在形式:

Z/X/Y.png 

如果您Y.tile文件重命名爲Y.png,壓縮起來,並把zip文件中/ SD卡/ osmdroid /,應該工作。

+0

對不起,我的倉促。我正在進一步測試,我將分享結果。 – epiGR

+1

非常感謝。地圖圖塊正確渲染。 如果有人有興趣,可以使用Mobile Atlas Creator的OSMdroid ZIP格式來創建這樣的壓縮映射。 – epiGR

+0

@ user976933 - 不需要進入/ sdcard/osmdroid/tiles嗎?我實際上在兩個地方嘗試過,我仍然會看到一張空白的地圖。 –

0

只是修正或補充user976933的答案,拉鍊也應包含tilesource作爲基本目錄的名稱,拉鍊內所需的結構是:

tilesourcename/Z/X/Y

加載瓦片的代碼在BitmapTileSourceBase:

@Override 
public String getTileRelativeFilenameString(final MapTile tile) { 
    final StringBuilder sb = new StringBuilder(); 
    sb.append(pathBase()); 
    sb.append('/'); 
    sb.append(tile.getZoomLevel()); 
    sb.append('/'); 
    sb.append(tile.getX()); 
    sb.append('/'); 
    sb.append(tile.getY()); 
    sb.append(imageFilenameEnding()); 
    return sb.toString(); 
} 

public String pathBase() { 
    return mName; 
}