gpt4 book ai didi

android - 在android中设置具有动态颜色的 map 标记图标

转载 作者:太空宇宙 更新时间:2023-11-03 13:50:55 25 4
gpt4 key购买 nike

如何设置具有动态颜色的自定义标记图标,该图标仅更改具有动态颜色的绿色区域

googleMap.addMarker(new MarkerOptions()
.position(latLng)
.visible(true)
.icon(BitmapDescriptorFactory.fromBitmap(changeBitmapColor(color))));

//此处为标记图标设置动态颜色

private Bitmap changeBitmapColor(int color) {
Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.pin_def);
Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0,
sourceBitmap.getWidth() - 1, sourceBitmap.getHeight() - 1);

Paint p = new Paint();
ColorFilter filter = new LightingColorFilter(color, 0);
p.setColorFilter(filter);

Canvas canvas = new Canvas(resultBitmap);
canvas.drawBitmap(resultBitmap, 0, 0, p);


return resultBitmap;
}

//它的工作,但它也改变了白色。如何避免这种情况并仅更改绿色并保持中心白色区域不变。谢谢。

enter image description here

最佳答案

我通过以下方式实现了这一点。我使用了两个单独的图像(带 Logo 和不带 Logo 的相同大小)带 Logo 的图像是透明的,并将它们合并为一个看起来像一个图像。

googleMap.addMarker(new MarkerOptions()
.position(latLng)
.visible(true).snippet(String.valueOf(i))
.icon(BitmapDescriptorFactory.fromBitmap(changeBitmapColor(color))));



private Bitmap changeBitmapColor(int color) {

Bitmap ob = BitmapFactory.decodeResource(this.getResources(), R.drawable.pin_fill);
Bitmap obm = Bitmap.createBitmap(ob.getWidth(), ob.getHeight(), Bitmap.Config.ARGB_8888);
Bitmap overlay = BitmapFactory.decodeResource(this.getResources(), R.drawable.pin_trans);
Bitmap overlaym = Bitmap.createBitmap(overlay.getWidth(), overlay.getHeight(), Bitmap.Config.ARGB_8888);


Canvas canvas = new Canvas(overlaym);
Paint paint = new Paint();
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(ob, 0f, 0f, paint);
canvas.drawBitmap(overlay, 0f, 0f, null);
return overlaym;
}

关于android - 在android中设置具有动态颜色的 map 标记图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com