如何使用保存在外部SD上的OSM离线地图?

时间:2013-04-20 13:16:50

标签: android osmdroid

我目前正在尝试开发一个使用osm离线地图的Android应用程序。 我想提供大量的离线地图。这就是为什么我决定使用我的Galaxy S2的外部SD卡作为磁贴源的文件夹。

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

我使用Windows资源管理器将osmdroid.zip复制到外部sd,但我的应用程序找不到它。 我还写了我自己的osmdroid颠覆作为库来选择一个特定的路径,但没有结果。可能,我没有尝试适当的路径。

我希望,那里有人可以形容我,如何使用外部sd作为瓷砖的存储空间。

2 个答案:

答案 0 :(得分:2)

osmdroid默认使用外部sdcard加载离线地图,因为它们是从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或直接使用MapTileFileArchiveProvider本身的MapTileProviderBasic。

有关osmdroid如何使用离线地图的详细解释:https://stackoverflow.com/a/8286276/891479

在您的应用中使用MapTileProviderBasic。这里有一些例子:http://www.androidadb.com/class/ma/MapTileProviderBasic.html

如果您的磁贴未加载,这也可能是因为您的zip中的目录结构错误,请不要忘记将磁贴源名称设置为基本目录:

/ tilesourcename /缩放级别/...

答案 1 :(得分:0)

在Galaxy S2中我通常位于/sdcard/external_sd的外部SD卡。 因此,您可以通过指定其路径来打开文件:

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

然后你可以正常阅读文件,但在你的情况下你可能想用ZipFile来阅读zip的内容。