PolylineOptions .color()不起作用

3
我正在尝试使用以下代码将我的地图上的折线设置为红色:
```html

我正在尝试使用以下代码将我的地图上的折线设置为红色:

```
PolylineOptions rectOptions = new PolylineOptions();
rectOptions.color(R.color.colorPrimary);
String[][] lineInformation = ((MyApplication)getApplication()).getLineInformation(line);
for (int i=0; i<lineInformation.length; i++){
    rectOptions.add(new LatLng(Double.parseDouble(lineInformation[i][0]),Double.parseDouble(lineInformation[i][1])));
}

但是它并没有起作用,它显示的不是我的应用程序的主色调(红色),而是一个带有一些透明度的深色。

我遵循了官方指南:https://developers.google.com/maps/documentation/android-api/shapes

3个回答

6
你的问题是由于混淆了颜色资源标识符颜色值所造成的,它们都是int类型。
让我们来看一下 PolylineOptions.color() 的文档

public PolylineOptions color (int color)

将折线的颜色设置为32位ARGB颜色。默认颜色是黑色(0xff000000)。

由于文档说明输入应为"32位ARGB颜色",因此您不能只传递颜色资源ID;您必须先手动将其解析为颜色值。 R.color.colorPrimary 是一个带有某些自动生成的值的int,可能类似于0x7f050042。不幸的是,这可以被解释为ARGB颜色,并且将是部分透明的,极其暗淡的蓝色。因此,应用程序不会崩溃,您只会在折线上得到一个意想不到的颜色。
为了获得正确的颜色,使用ContextCompat.getColor()将您的颜色资源id解析为颜色值,然后将颜色值传递给color()方法:
Context c = /* some context here */
int colorPrimary = ContextCompat.getColor(c, R.color.colorPrimary);
rectOptions.color(colorPrimary);

0

调用这个方法可以绘制折线,并且您可以为折线添加任何颜色

fun drawPolyline(color: Int, list: ArrayList<LatLng>, googleMap: GoogleMap,width:Float): Polyline {
        val options = PolylineOptions().width(width)
            .color(color)
            .geodesic(true)
        for (z in list.indices) {
            val point = list[z]
            options.add(point)
        }
        return googleMap.addPolyline(options)
    }

0
你还可以使用预定义的Java "Color"类,获取一些标准颜色,并将其传递给地图。
例如:
PolylineOptions rectOptions = new PolylineOptions();
<p>rectOptions.color(Color.BLUE);</p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接