在步骤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:类中没有类型为Z的字段DEBUG_TILE_PROVIDERS Lorg / osmdroid / tileprovider /常数/ OpenStreetMapTileProviderConstants ; 或其超类等
我尝试了很多Osmdroid,Osmdroid和Mapsforge版本的组合。例如(我使用了很多其他组合......如jitpack.io,osmdroid release和osmbonuspack release所示。错误保持不变。
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'
答案 0 :(得分: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。