获取 MapView 的位图如果从未可见,则会失败



我有一个带有ViewSwitcher的应用程序,其中包含一个MapView和另一个视图,我想将MapView的位图保存为图像。如果通过执行以下操作,MapView 至少可见一次,则效果很好:

mapView.setDrawingCacheEnabled(true);
Bitmap bm = mapView.getDrawingCache();
/* ... save bitmap ... */

问题是,如果 MapView 不可见,getDrawingCache() 返回位图的null。有什么办法可以解决这个问题吗?

我找到了怎么做。有两件事要做:

要获取位图,请创建自己的位图并使 MapView 绘制到其中:

    Bitmap bm = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bm);
    mapView.draw(canvas);

如果这样做,则位图中将包含所有叠加层,但不会包含地图图像(磁贴)。为了实现这一点,您必须在将地图绘制到位图之前调用mapView.preLoad()

最新更新