我试图使用谷歌地图v2获得Marker
着色。下面的解决方案不工作:
Drawable d = getResources().getDrawable(R.drawable.my_drawable);
d.setColorFilter(getResources().getColor(
R.color.tint_color), Mode.MULTIPLY);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromBitmap(((BitmapDrawable) d).getBitmap());
myMap.addMarker(new MarkerOptions().icon(bitmap).position(latLon));
是否有其他解决方案获得Markers
着色?
问题是你正在着色可绘制的(改变它的油漆,真的),但你然后传递底层位图。在地图API(我不熟悉的)之外修复这个问题的一种方法是用新的位图将Drawable绘制到画布上。
Bitmap filtered = Bitmap.createBitmap(d.getBitmap());
Canvas canvas = new Canvas(filtered);
d.draw(canvas);
(这只是一个例子,它不做任何错误处理-你应该处理的情况下,Android返回给你相同的位图,而不是一个新的。)它也不处理边界)