我想创建 Osmdroid MapView (mymapView) 的屏幕截图。我这样做:
Bitmap bitmap=mymapView.getDrawingCache().copy(Bitmap.Config.RGB_565, true);
我收到这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.Bitmap.copy(android.graphics.Bitmap$Config, boolean)' on a null object reference
我认为这是因为当我尝试创建位图时 MapView 还没有准备好。我想我必须为 Osmdroid 使用 GoogleMap.SnapshotReadyCallback
的等价物。 Osmdroid 是否有这样的类,或其他 merhod 来创建 Mapview 的屏幕截图?
最佳答案
Osmdroid 6.1.0 中引入了类似的功能。对应的类是MapSnapshot .
可以在这里找到它的示例用法:SampleMapSnapshot
一个简单的用法是这样的,这里的 pMapView 就是我们要快照的 Mapview。
final MapSnapshot mapSnapshot = new MapSnapshot(new MapSnapshot.MapSnapshotable() {
@Override
public void callback(final MapSnapshot pMapSnapshot) {
if (pMapSnapshot.getStatus() != MapSnapshot.Status.CANVAS_OK) {
return;
}
final Bitmap bitmap = Bitmap.createBitmap(pMapSnapshot.getBitmap());
// Do something with the bitmap like save to file
}
}, MapSnapshot.INCLUDE_FLAG_UPTODATE, pMapView);
new Thread(mapSnapshot).start();
注意:由于某些原因,如果您在 onCreate 期间直接调用它,会导致崩溃。否则它会按预期工作
关于android - 创建 Osmdroid Mapview 的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46694694/