Reputation: 45
I would like to know, how to change the osmdroid default path to an extSdCard path?
according to the documentation, it is possible using:
Configuration.getInstance().SetOsmdroidBasePath();
I believe when running my project it automatically starts on the way:
StorageUtils.getStorage().GetAbsolutePath()
, "osmdroid"
I tried to use the command below, but my map does not display the tiles
Configuration.getInstance().setOsmdroidBasePath(new File("/mnt/extSdCard/osmdroid"));
And when I debug my code using this: Configuration.getInstance().GetOsmdroidBasePath().GetPath()
It presents the correct path.
It is necessary to perform some reload of my map?
Upvotes: 0
Views: 470
Reputation: 1911
For OSM version 6.x you can use the following code
@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);
...
}
Upvotes: 0
Reputation: 3258
If the user has granted runtime permissions for storage before the map view is created, then it should work just fine. You may want to check to make sure you can write to that path. Android is strange and often times just because a path is available does not mean you can write to it. The StorageUtils
class can help you find the available paths and it should be able to determine which path is writable. It is, however, imperfect. Paths can vary from device to device and results can be unpredictable.looking at this link might help you.
Upvotes: 1