Osmdroid (android 25): show offline Mapsforge file gives the error: java.lang.NoSuchFieldError: No field DEBUG_TILE_PROVIDERS
Osmdroid (android 25): show offline Mapsforge file gives the error: java.lang.NoSuchFieldError: No field DEBUG_TILE_PROVIDERS
作为第 1 步,在线 MAPNIK 地图显示在 Manifest.xml 和 read/write 外部资源的运行时权限之后。
下一步,我想使用 Osmdroid 显示离线 Mapsforge 文件的地图。上下文是 Android 25。
你能给我推荐一个好的 Osmdroid、Osmbonuspack 和 Mapsforge 的版本组合吗?
我使用以下代码来显示离线 Mapsforge 文件。完整的示例在 Github project 中。 1 File 用于选择文件,1 file 用于显示文件。
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: Error downloading tile: /9/55/139
java.lang.NoSuchFieldError: No field DEBUG_TILE_PROVIDERS of type Z in class
Lorg/osmdroid/tileprovider/constants/OpenStreetMapTileProviderConstants;
or its superclasses etc
我尝试了多种 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'
如 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。
作为第 1 步,在线 MAPNIK 地图显示在 Manifest.xml 和 read/write 外部资源的运行时权限之后。
下一步,我想使用 Osmdroid 显示离线 Mapsforge 文件的地图。上下文是 Android 25。
你能给我推荐一个好的 Osmdroid、Osmbonuspack 和 Mapsforge 的版本组合吗?
我使用以下代码来显示离线 Mapsforge 文件。完整的示例在 Github project 中。 1 File 用于选择文件,1 file 用于显示文件。
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: Error downloading tile: /9/55/139 java.lang.NoSuchFieldError: No field DEBUG_TILE_PROVIDERS of type Z in class Lorg/osmdroid/tileprovider/constants/OpenStreetMapTileProviderConstants; or its superclasses etc
我尝试了多种 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'
如 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。