我已经尝试了两种方法将MapView另存为位图,但在我看来似乎没有任何效果.第一种选择
Bitmap bitMap = mMapView.getDrawingCache();
mMapView.setDrawingCacheEnabled(true);
bitMap = mMapView.getDrawingCache(true);
第二,
Canvas offscreencanvas = new Canvas();
Bitmap bmap = Bitmap.createBitmap(mMapView.getWidth(), mMapView.getHeight(),
Bitmap.Config.ARGB_8888);
bmap.copy(Config.ARGB_4444, true);
offscreencanvas.setBitmap(bmap);
offscreencanvas.drawBitmap(bmap, 0, 0, null);
两者都会导致宽度和高度为-1的位图对象,因此当我尝试将位图用作纹理时,它不会显示.在mapview渲染后,我单击按钮时将位图保存代码称为调用代码,但是它仍然给出相同的结果.
有没有人设法做到这一点?
解决方法:
我在尝试利用图形缓存时遇到了类似的问题.我发现对我有帮助的一些项目:
>确保立即复制图形缓存. Android也可以并且也将回收绘制缓存的位图.我在用它绘制视图时,让Android破坏了位图缓存.
>由于某种原因,在检索缓存之前将其破坏会给我带来更一致的结果.
这是我正在使用的工作代码:
// Disable caching, destroy the cache, and force a rebuild
imageView.setWillNotCacheDrawing(false);
imageView.destroyDrawingCache();
imageView.buildDrawingCache();
// Copy the drawing cache before the system recycles it
Bitmap cachedImage = Bitmap.createBitmap(imageView.getDrawingCache());
另请注意,我使用的是ImageView,但我希望MapView的代码路径相同.
最后,在您发布的代码示例中,您将创建一个位图大小与地图视图相同.您复制此位图,然后将结果丢弃.然后,将画布设置为此位图支持,然后尝试将位图绘制到位图. (是的,我输入正确.)尝试类似这样的方法来代替您的画布代码
Bitmap mapCache = /* Get this using the previous code */
Bitmap bmap = Bitmap.createBitmap(mMapView.getWidth(), mMapView.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas offscreencanvas = new Canvas(bmap);
offscreencanvas.drawBitmap(mapCache, 0, 0, null);
标签:google-maps,bitmap,android 来源: https://codeday.me/bug/20191208/2090668.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。