如何将osmdroid默认路径更改为extSdCard

时间:2019-04-18 19:57:36

标签: android osmdroid

我想知道,如何根据文档https://osmdroid.github.io/osmdroid/Offline-Map-Tiles.html将osmdroid默认路径更改为extSdCard路径。 可以使用: Configuration.getInstance()。SetOsmdroidBasePath

我相信在运行项目时,它会自动启动: StorageUtils.getStorage()。GetAbsolutePath(),“ osmdroid”

我尝试使用下面的命令,但我的地图未显示图块

Configuration.getInstance().setOsmdroidBasePath(new File("/mnt/extSdCard/osmdroid"));

当我使用以下代码调试代码时:Configuration.getInstance().GetOsmdroidBasePath().GetPath()

它显示了正确的路径。

是否需要重新加载我的地​​图?

2 个答案:

答案 0 :(得分:1)

如果在创建地图视图之前用户已授予运行时存储权限,则它应该可以正常工作。您可能需要检查以确保可以写入该路径。 Android很奇怪,通常只是因为路径可用并不意味着您可以写入它。 StorageUtils类可以帮助您找到可用的路径,并且应该能够确定哪个路径是可写的。但是,这是不完善的。路径因设备而异,结果可能无法预测。

https://github.com/osmdroid/osmdroid/blob/master/osmdroid-android/src/main/java/org/osmdroid/tileprovider/util/StorageUtils.java

答案 1 :(得分:0)

对于OSM 6.x版,您可以使用以下代码

@Override
    public void onCreate() {
    ...
    org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance();
    File basePath = new File(getCacheDir().getAbsolutePath(), "osmdroid");
    osmConf.setOsmdroidBasePath(basePath);
    File tileCache = new File(osmConf.getOsmdroidBasePath().getAbsolutePath(), "tile");
    osmConf.setOsmdroidTileCache(tileCache);
    ...
}