我有一个带有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()
。