我有一个可以正常工作并已设置的 MapView,正在绘制的覆盖项目(当简单地引用为可绘制对象时)工作得很好。但是,每个可绘制项都需要在其上包含一个数值(例如,叠加项 1,需要在其上显示 #1)。我创建了布局样式 R.layout.map_bubble_standard。我正在尝试将该视图转换为位图,并将该位图转换为要在地图上显示的可绘制对象。但是,当地图加载时,什么都没有显示。这就是我正在做的...
LayoutInflater inflater = (LayoutInflater) _context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
LinearLayout bubbleView = (LinearLayout)inflater.inflate(R.layout.map_bubble_standard, null);
bubbleView.setDrawingCacheEnabled(true);
bubbleView.buildDrawingCache();
//drawable = _context.getResources().getDrawable(R.drawable.map_pin_48);
drawable = new BitmapDrawable(_context.getResources(), bubbleView.getDrawingCache());
bubbleView.setDrawingCacheEnabled(false);
OverlayItem oi = _overlays.get(whichOne);
oi.setMarker(boundCenterBottom(drawable));
我的代码很好地完成了该方法,但没有在地图上绘制任何内容。谁能帮助确定我做错了什么?
[编辑] - 已解决
我使用了我找到的另一个链接,它提供了解决此问题的建议: 这里
希望这也可以在将来帮助其他人。作为参考,我还将视图的充气机和充气机对象本身移到了逐项叠加类的默认构造函数中。
_bubbleLayout.setDrawingCacheEnabled(true);
_bubbleLayout.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
_bubbleLayout.layout(0, 0, _bubbleLayout.getMeasuredWidth(), _bubbleLayout.getMeasuredHeight());
_bubbleLayout.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(_bubbleLayout.getDrawingCache());
_bubbleLayout.setDrawingCacheEnabled(false); // clear drawing cache
//drawable = _context.getResources().getDrawable(R.drawable.map_pin_48);
drawable = (Drawable) new BitmapDrawable(_context.getResources(),b);
OverlayItem oi = _overlays.get(whichOne);
oi.setMarker(boundCenterBottom(drawable));