2013-04-20 21 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/...