1

我正在尝试Marker使用 Google Maps v2 进行着色。以下解决方案不起作用:

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染色?

4

1 回答 1

3

问题是您正在为可绘制对象着色(实际上是在更改其绘制),但随后您传递了底层位图。在 Maps API(我不熟悉)之外解决此问题的一种方法是使用新的位图将 Drawable 绘制到 Canvas 上。

Bitmap filtered = Bitmap.createBitmap(d.getBitmap());
Canvas canvas = new Canvas(filtered);
d.draw(canvas);

(这只是一个例子,它没有做任何错误处理 - 当 Android 给你返回相同的位图而不是新的位图时,你应该处理这种情况。它也没有处理边界)

于 2013-04-11T08:01:05.037 回答