在 Google 地图上绘制方向不连续

Drawing a direction on Google maps is not continuous

我正在使用这些设置来创建从一个位置到另一个位置的方向:

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

试试这个,对我来说效果很好。您也可以添加多个点。

mMap.addPolyline(new PolylineOptions().add(PointA).add(PointB).width(8f).color(Color.RED));

您添加了许多 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));

我 运行 遇到同样的问题,多段线断开。在这里没有找到解决方案后,我偶然发现了一个已关闭的问题 here。如果您只是添加调用 Googles API 的结果给出的所有步骤的所有点,您将不会得到一条连续线,因为端点将被添加两次。一次作为一个步骤的结束,第二次作为下一步的开始。这就是为什么没有单一的连续线以及为什么您必须删除重复项的原因。在 Kotlin 中,调用 allPoints = allPoints.distinct() as ArrayList<LatLng> 非常简单。调用它会保持点的顺序,但会删除列表中的所有重复项。