【问题标题】:Google maps api v2 polylines android谷歌地图 api v2 折线 android
【发布时间】:2013-01-21 04:35:05
【问题描述】:

每次找到一个新的LatLng 时,我都需要在谷歌地图上从ArrayList 绘制折线,其颜色是根据当前速度与车辆最大速度的百分比。

我为此使用以下代码:

 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.speeds 是保持所有速度的ArrayListmaxspeed 是车辆的最大速度,当车辆的maxspeed 发生变化并且折线的颜色根据 %age最大速度,随着最大速度的增加,之前的折线的颜色也应该改变,所以我需要重新绘制它。所以我这里的问题是每次我得到一个新的latlng时如何重新绘制折线。

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

感谢和问候

【问题讨论】:

  • 您的问题到底是什么?抱歉,但现在听起来您希望其他人为您编写代码...
  • 我不希望实际上我只是寻求帮助来解决我的问题我已经编写了代码
  • 但是你还没有说你的问题是什么!您的帖子中没有问题描述。没有问题!
  • 我编辑了我的问题。你现在可以检查一下吗。

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


【解决方案1】:

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

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

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

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

Route.paths.add(polyline);

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

【讨论】:

  • 不,实际上我想用不同的颜色重新绘制它,而不是将它附加到以前记录的 latlng 中。所以我必须使用 Polyline.remove() 删除折线吗?
  • 如果您只更改点和颜色,这两个选项是等效的 - 只需选择一个最适合您的选项。
猜你喜欢
  • 1970-01-01
  • 2017-01-25
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多