Wenn ich mich richtig erinnere, können Sie nicht auf eine .map-Datei im Ordner Assets zugreifen. Sie müssen es von dort auf die SD-Karte kopieren.
private void provideMapData() {
String sourceFile = res.getString(R.array.mapsource);
String destinationFile = res.getString(R.array.mapdestination);
String pathPrefix = activity.getExternalFilesDir(null) + "/";
File directory = new File(pathPrefix);
if (directory.exists() | directory.mkdirs()) {
AssetManager assetManager = activity.getAssets();
InputStream inputStream;
OutputStream outputStream;
File file = new File(pathPrefix + destinationFile);
if (!file.exists()) {
try {
inputStream = assetManager.open(sourceFile);
outputStream = new FileOutputStream(file);
byte[] buffer = new byte[8192];
int read;
while ((read = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, read);
}
inputStream.close();
outputStream.flush();
outputStream.close();
} catch (IOException iOE) {
Log.e("Error: ", "provideMapData()");
}
}
}
}
Dann lade ich die MapDataStore wie folgt aus:
MapDataStore mapDataStore = new MapFile(new File(activity.getExternalFilesDir(null) + "/" + destinationFile));
Nach this, sollten Sie diese in Ihre Manifest-Datei setzen:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
Es wird Sie retten ausdrücklich die fragen Benutzer, um die Berechtigung WRITE_EXTERNAL_STORAGE zu erteilen.
org.mapsforge.map.reader.MapFile stammt von mapsforge lib nicht von osmdroid-lib. Ich habe die Frage-Tags repariert. Ich habe nach [MapFile.java] (https://github.com/mapsforge/mapsforge/blob/master/mapsforge-map-reader/src/main/java/org/mapsforge/map/reader/MapFile.java) geschaut. und ich habe keine Stream-API gefunden, die für den Zugriff auf Assets erforderlich ist. Vielleicht kann dir jemand von Mapsforge helfen. Die osmdroid-mapsforge-Integration unterstützt derzeit keine Mapsforge-Maps in Assets. Wenn Sie herausfinden, wie es geht, fügen Sie es bitte zu diesem Ticket hinzu, damit wir es auch zu osmdroid-mapsforge-integration hinzufügen können – k3b