【问题标题】:PolylineOptions .color() not workingPolylineOptions .color() 不起作用
【发布时间】:2018-03-04 16:13:43
【问题描述】:

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

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])));
}

但它不起作用,而不是显示我的应用程序的primaryColour是红色的,而是显示带有一些alpha的深色。

我按照官方指南:https://developers.google.com/maps/documentation/android-api/shapes

【问题讨论】:

    标签: android google-maps-android-api-2 android-maps-v2 polyline polylineoptions


    【解决方案1】:

    您的问题是由颜色资源标识符颜色值之间的混淆引起的,两者都是ints。

    我们来看看the documentation for 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);
    

    【讨论】:

      【解决方案2】:

      您还可以使用预定义的 Java“Color”类来获取一些标准颜色并将其传递给地图。

      例如

      PolylineOptions rectOptions = new PolylineOptions();
      <p>rectOptions.color(Color.BLUE);</p>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 2019-08-09
        • 2023-03-10
        • 2022-11-16
        • 1970-01-01
        相关资源
        最近更新 更多