3

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

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

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

我希望那里有人可以描述我,如何使用外部 sd 作为磁贴的存储。

4

2 回答 2

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/zoomlevel/...

于 2013-04-22T10:13:15.853 回答
0

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

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

然后您可以正常读取文件,但在您的情况下,您可能希望使用 aZipFile来读取 zip 的内容。

于 2013-04-20T14:04:49.077 回答