0

ArrayList每次LatLng发现一个新的颜色取决于当前速度与车辆最大速度的百分比时,我需要在谷歌地图上绘制折线。

我为此使用以下代码:

 for (int i = 0; i < Route.speeds.size(); i++)
        {
            colorOfGraph = graphColor(Route.speeds.get(i), maxSpeed);
            polylineOptions = new PolylineOptions().addAll(Route.points).width(5).color(colorOfGraph);
            Polyline polyline = googleMap.addPolyline(polylineOptions);
            Route.paths.add(polyline);
        }

其中Route.speedsArrayList保持所有速度,maxspeed是车辆的最大速度,当车辆发生变化时maxspeed会发生变化,折线的颜色取决于最大速度的百分比,随着最大速度的增加,先前折线的颜色也应该改变,所以我需要再次绘制它。所以我的问题是每次我得到一个新的 latlng 时如何重绘折线。

所以请任何人帮助我解决这个问题。

感谢和问候

4

1 回答 1

3

好的,为了“重绘”Polyline你有两个选择:

  1. 通过使用删除它来模拟它Polyline.remove()。然后使用PolylineOptions并添加再次构建它GoogleMap.addPolyline()

  2. 更改折线的属性。您可以使用设置它的颜色setColor(int)并使用设置点setPoints(List<LatLng>)。调用任何这些方法后,折线应自动在地图上重新绘制。

在这两种情况下,您都必须保留对创建的折线的引用,但您已经在该行中执行了此操作:

Route.paths.add(polyline);

如果我是你,我会选择第二个选项,因为你不必重新创建整个Route.paths集合。相反,您只需要添加一条折线 - 从先前记录LatLng到最后LatLng记录的一条折线。

于 2013-02-06T05:01:36.583 回答