我正在使用这些设置来创建从一个位置到另一个位置的方向:
PolylineOptions polylineOptions = new PolylineOptions();
polylineOptions.width(15);
polylineOptions.color(colorPrimary);
mMap.addPolyline(polylineOptions.addAll(points));
在地图上,它看起来像这样:
https://ibb.co/D13xc0T
如何在没有这些中断的情况下从一个点到另一个点画一条连续的线?
这是获得分数的代码:
if (direction != null) {
List<Route> routes = direction.routes;
Route route = routes.get(0);
List<Leg> legs = route.legs;
Leg leg = legs.get(0);
List<Step> steps = leg.steps;
for (Step step : steps) {
String point = step.polyline.points;
List<LatLng> points = PolyUtil.decode(point);
}
}
您可以向映射添加许多PolylineOptions
。它们没有连接到每个,所以你会得到这个中断。尝试将所有解码路径添加到一个公共数组中。
您编辑的代码:
ArrayList<LatLng> points = new ArrayList<LatLng>();
for (Step step : steps) {
String point = step.polyline.points;
points.addAll(PolyUtil.decode(point));
}
PolylineOptions polylineOptions = new PolylineOptions();
polylineOptions.width(15);
polylineOptions.color(colorPrimary);
mMap.addPolyline(polylineOptions.addAll(points));
试试这个,它对我来说很好用。您也可以添加多个点。
mMap.addPolyline(new PolylineOptions().add(PointA).add(PointB).width(8f).color(Color.RED));
我遇到了折线断开的相同问题。在这里找不到解决方案后,我在这里偶然发现了一个已关闭的问题。如果您只是按照调用Googles API的结果添加所有步骤的所有点,则不会得到连续的行,因为端点将被添加两次。一次作为步骤的结束,第二次作为下一步的开始。这就是为什么没有单一的连续行以及为什么您必须删除重复项的原因。在 Kotlin 中,通过调用allPoints = allPoints.distinct() as ArrayList<LatLng>
非常容易。调用此值将保留点的顺序,但删除列表中的任何重复项。