Osmdroid(android 25):显示离线Mapsforge文件给出错误:java.lang.NoSuchFieldError:No field DEBUG_TILE_PROVIDERS

问题描述 投票:0回答:1

在步骤1中,在读/写外部资源的Manifest.xml和Runtime权限之后显示在线MAPNIK映射。

下一步,我想使用Osmdroid显示离线Mapsforge文件的地图。上下文是Android 25。

你能给我一个Osmdroid,Osmbonuspack和Mapsforge的好版本组合吗?

我用以下代码来显示脱机Mapsforge文件。完整的例子是在Github project。 1用于选择文件的文件,1个用于显示文件的文件。

private void showMapsforgeFile( File mapFile) {
    File[] files = new File[1];
    files[0] = mapFile;
    MapsForgeTileSource.createInstance( this.getApplication());
    fromFiles = MapsForgeTileSource.createFromFiles( files);
    forge = new MapsForgeTileProvider( new SimpleRegisterReceiver( getBaseContext()), fromFiles);
    mapView.setTileProvider(forge);
    mapView.getController().setZoom( 9);
    GeoPoint startPoint = new GeoPoint(52.2222, 36.6123);
}

这给(通常)下一条消息:

I / OsmDroid:下载磁贴时出错:/ 9/55/139 java.lang.NoSuchFieldError:类Lorg / osmdroid / tileprovider / constants / OpenStreetMapTileProviderConstants中没有类型为Z的字段DEBUG_TILE_PROVIDERS;或其超类等

我尝试了很多Osmdroid,Osmdroid和Mapsforge版本的组合。例如(我使用了很多其他组合......如jitpack.io,osmdroid发行版和osmbonuspack发行版所示。错误保持不变。

compile 'com.github.MKergall:osmbonuspack:6.1'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'org.osmdroid:osmdroid-android:5.5'
compile 'org.osmdroid:osmdroid-mapsforge:5.5:release@aar'
compile 'org.mapsforge:mapsforge-map-android:0.6.1'
compile 'org.mapsforge:mapsforge-map:0.6.1'
android osmdroid
1个回答
1
投票

正如github上提到的,你的osmdroid库版本不匹配。将它们全部设置为相同的版本,你应该很高兴。违规参考:osmdroid-mapsforge

https://github.com/johan974/osmdroid-mapsforge-demo/blob/master/app/build.gradle#L34

编辑:

这是工作配置 compile 'org.osmdroid:osmdroid-android:5.6.5' compile 'org.osmdroid:osmdroid-mapsforge:5.6.5' compile 'org.mapsforge:mapsforge-map-android:0.6.1' compile 'org.mapsforge:mapsforge-map:0.6.1' 请注意,它将记录与渲染主题相关的错误消息,但它将呈现

还有一些小的api差异,我修复了你的项目的分叉,并打开了一个pr。

© www.soinside.com 2019 - 2024. All rights reserved.