Android Google maps-v2 之前的多段线未删除

Android Google maps-v2 previous polyline not removing

Whosebug 上尝试了所有以前的答案后,我发布了这个答案。

我正在显示 driver 的实时位置以及从该位置到特定目的地的路径。我想要的是尽快删除旧的多段线 driver 的实时位置发生变化,但它并没有发生变化,而且多段线的数量也在增加。

这是我删除多段线的代码,但它不起作用。

private void drawRouteOnMap(GoogleMap map, List<LatLng> positions) {
    PolylineOptions options = new PolylineOptions().width(12).color(Color.GREEN).geodesic(true);
    options.addAll(positions);

    if (polyline != null) {
        polyline.remove();
        Log.e("Old Poly", "Removed");
    }

    Log.e("Poly", "Added");
    polyline = mMap.addPolyline(options);
}

这样试试。

// decleare it globally
List<Polyline> polylines = new ArrayList<Polyline>();

private void drawRouteOnMap(GoogleMap map, List<LatLng> positions) {
    PolylineOptions options = new PolylineOptions().width(12).color(Color.GREEN).geodesic(true);
    for(Polyline polyline: polylines){
      polyline.remove();
    }
    polylines.clear();

    for(LatLng latlng: positions){
        options.add(latlng);
        polylines.add(mMap.addPolyline(options);
    }
}

我自己解决了。这是因为 function 是从另一个 call 调用的,因此 polyline 实例为空。通过在 SharedPrefrence 中保存 polyline 并在下次调用时再次检索该值来解决它。