首页 文章

Google映射api v2折线android

提问于
浏览
0

我需要在每次找到新的 LatLng 时在Google Map 上绘制折线,其颜色根据当前速度与车辆最大速度的百分比来确定 .

我正在使用以下代码:

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时重绘折线 .

所以任何人都可以帮我解决这个问题 .

感谢和问候

1 回答

  • 3

    好的,为了"redraw" Polyline 你有两个选择:

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

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

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

    Route.paths.add(polyline);
    

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

相关问题