抱歉我的英语不好,我有一个问题。我是android新手,不知道怎么做。
如何修改项目中的OSMdroid 4.2 jar文件代码?
我将这些jar文件作为库添加到我的项目中。我的应用程序有3种语言。我有每种语言的瓦片源。当我选择语言时,程序会选择使用相同语言的磁贴源。但是当我缩放地图时,地图中的语言自动会发生变化。我不知道为什么会这样做。我认为这取决于存储中的瓷砖缓存 有没有办法单独为每种语言更改存储区中的磁贴缓存? 谢谢! :)
答案 0 :(得分:3)
请参阅:https://github.com/osmdroid/osmdroid/issues/78 这是同样的问题(OSMDROID_PATH和TILE_PATH_BASE硬编码和最终)。
使用this patch(下面可能是旧版本),您可以根据需要更改切片缓存路径。
package org.osmdroid.tileprovider.constants;
import java.io.File;
import android.os.Environment;
/**
* This class contains key settings related to the osmdroid cache, and methods to change default values.
*/
public class TilesCacheSettings {
/** Base path for osmdroid files. Zip files are in this folder. */
public static File OSMDROID_PATH = new File(Environment.getExternalStorageDirectory(),
"osmdroid");
/** Base path for tiles. */
public static File TILE_PATH_BASE = new File(OSMDROID_PATH, "tiles");
/** 600 Mb */
public static long TILE_MAX_CACHE_SIZE_BYTES = 600L * 1024 * 1024;
/** 500 Mb */
public static long TILE_TRIM_CACHE_SIZE_BYTES = 500L * 1024 * 1024;
/** Change the root path of the osmdroid cache.
* By default, it is defined in SD card, osmdroid directory.
* @param newFullPath
*/
public static void setCachePath(String newFullPath){
OSMDROID_PATH = new File(newFullPath);
TILE_PATH_BASE = new File(OSMDROID_PATH, "tiles");
}
/** Change the osmdroid tiles cache sizes
* @param maxCacheSize in Mb. Default is 600 Mb.
* @param trimCacheSize When the cache size exceeds maxCacheSize, tiles will be automatically removed to reach this target. In Mb. Default is 500 Mb.
*/
public static void setCacheSizes(long maxCacheSize, long trimCacheSize){
TILE_MAX_CACHE_SIZE_BYTES = maxCacheSize * 1024 * 1024;
TILE_TRIM_CACHE_SIZE_BYTES = trimCacheSize * 1024 * 1024;
}
}
答案 1 :(得分:0)
只在
中添加以下代码OpenStreetMapTileProviderConstants.setCachePath(this.getFilesDir().getAbsolutePath());
或
OpenStreetMapTileProviderConstants.setCachePath("other path");