#android #openstreetmap #osmdroid
#Android #openstreetmap #osmdroid
Вопрос:
Я хотел бы знать, как изменить путь osmdroid по умолчанию на путь extSdCard?
согласно документации, это возможно с помощью:
Configuration.getInstance().SetOsmdroidBasePath();
Я считаю, что при запуске моего проекта он автоматически запускается по пути:
StorageUtils.getStorage().GetAbsolutePath()
, «osmdroid»
Я попытался использовать приведенную ниже команду, но на моей карте не отображаются плитки
Configuration.getInstance().setOsmdroidBasePath(new File("/mnt/extSdCard/osmdroid"));
И когда я отлаживаю свой код, используя это: Configuration.getInstance().GetOsmdroidBasePath().GetPath()
Он представляет правильный путь.
Необходимо выполнить некоторую перезагрузку моей карты?
Ответ №1:
Если пользователь предоставил разрешения времени выполнения для хранения до создания представления карты, то он должен работать нормально. Возможно, вы захотите проверить, можете ли вы записывать по этому пути. Android странный, и часто только потому, что путь доступен, не означает, что вы можете на него записывать. StorageUtils
Класс может помочь вам найти доступные пути, и он должен быть в состоянии определить, какой путь доступен для записи. Однако он несовершенен. Пути могут варьироваться от устройства к устройству, и результаты могут быть непредсказуемыми.просмотр этой ссылки может вам помочь.
Комментарии:
1. Привет, шпион, я пытался выполнить то, что вы предложили, но ошибок не возникло. Но мои плитки не отображались на карте, необходимо было бы сохранить или загрузить найденные в Configuration.getInstance() методы. И да, когда я перечисляю файлы, найденные в каталоге, он представляет меня правильно. используя StorageUtils.getAllStorageLocations().get(«sdCard»).getPath()
2. Configuration.getInstance().setosmdroid basePath(новый файл(StorageUtils.getAllStorageLocations().get(«sdCard»).getPath(), «osmdroid»));
3. Моя ошибка в указании плиток в автономном режиме, спасибо за вашу помощь.
Ответ №2:
Для 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);
...
}