Android Google地图:渐变颜色的自定义标记

时间:2017-10-14 03:11:40

标签: android google-maps google-maps-api-3 bitmap google-maps-markers

我有一个简单的Android应用程序,其中包含一个显示当前默认标记的Google Map。好的一点是,我可以简单地改变标记的颜色/色调,在我的情况下,这取决于标记将会过期的时间"

bitmapDescriptor = BitmapDescriptorFactory.defaultMarker(this.calculateMarkerHue(msg));

MarkerOptions markerOptions = new MarkerOptions()
                .position(new LatLng(...))
                .icon(bitmapDescriptor)
                .title("Title")
                .snippet("Snippet");


private float calculateMarkerHue(Message msg) {
    float hue = <calculate some value 0.0..360.0 depending on msg>
    return hue;
}

这完全没问题。但是,现在我想使用自定义标记来支持不同类型的标记。虽然我设法使用其他PNG drawable改变标记形状,但我没有成功对颜色进行任何更改。 (不同类型的)绘图,位图,画布,位图描述符的整个概念......我无法理解。

我尝试过在网上找到的各种东西,但没有任何效果。我得到了投射错误,空指针异常或没有错误,但没有关于设置颜色的效果。

1 个答案:

答案 0 :(得分:1)

尝试添加drawable并通过画布绘制它:

bitmapFromDrawable

private BitmapDescriptor bitmapFromDrawable(Context context, int vectorResId) { Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorResId); vectorDrawable.setBounds(0, 0, vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight()); Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); vectorDrawable.draw(canvas); return BitmapDescriptorFactory.fromBitmap(bitmap); } 应该是:

d ={(17, 19): 1, (22, 24): 0, (18, 24): 1}
x,y = zip(*d)
x,y