2013-04-20 62 views
2

我目前嘗試開發一個使用osm離線地圖的Android應用程序。 我想提供大量的離線地圖。這就是爲什麼我決定使用我的Galaxy S2的外部SD卡作爲磁貼源的文件夾。如何使用保存在外部SD上的OSM離線地圖?

不幸的是,我無法在eclipse的ddms-file-explorer中找到外部SD卡。 我只找到了內部sd。

我使用Windows資源管理器將osmdroid.zip複製到外部sd,但是我的應用程序找不到它。 我也寫我自己的osmdroid顛覆作爲庫來選擇特定的路徑,但沒有結果。可能,我沒有嘗試適當的路徑。

我希望,有人在那裏,誰可以描述我,如何使用外部sd作爲瓷磚的存儲。

回答

0

在Galaxy S2的外部SD卡我通常位於/sdcard/external_sd。 所以,你可以通過指定其路徑打開文件:

File myFile = new File(/sdcard/external_sd/osmdroid.zip); 

,然後你可以正常讀取該文件,但在你的情況,你可能想使用ZipFile讀取壓縮的內容。

2

默認外部SD卡osmdroid使用,因爲它們是從OpenStreetMapTileProviderConstants定義的osmdroid目錄加載加載離線地圖:

/** Base path for osmdroid files. Zip files are in this folder. */ 
public static final File OSMDROID_PATH = new File(Environment.getExternalStorageDirectory(), 
     "osmdroid"); 

要載入您的地圖,你可以使用MapTileFileArchiveProvider或直接MapTileProviderBasic使用MapTileFileArchiveProvider本身。

有如何osmdroid脫機作品在這裏映射了很好的解釋:https://stackoverflow.com/a/8286276/891479

使用MapTileProviderBasic在您的應用程序。這裏的一些例子:http://www.androidadb.com/class/ma/MapTileProviderBasic.html

如果瓷磚沒有加載這也可能是因爲您的Zip文件裏的目錄結構是錯誤的,不要忘記設置瓷磚源名稱作爲基本目錄:

/tilesourcename/zoomlevel/...