如何从地图中删除所有多段线

以下

如何绘制两个标记之间的path

我不得不在两个标记之间添加很多折线,以便制作一个path。

其中一个标记是可拖动的,可以说源是可拖动的。

因此,当用户开始拖动标记时,先前绘制的path必须被擦除,并且必须绘制新源和目的地之间的新path。

我能够画出新的道路,但是我怎样才能抹去以前的道路呢?

这是如何绘制的path:

for (int z = 0; z < list.size() - 1; z++) { LatLng src = list.get(z); LatLng dest = list.get(z + 1); Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(src.latitude, src.longitude), new LatLng(dest.latitude, dest.longitude)) .width(2).color(Color.RED).geodesic(true)); } 

我可以得到的一个解决scheme是

map.clear();

要清除所有多段线,标记等。并再次添加标记,然后绘制path。

但只要我开始拖动,标记被清除,因此在地图上不可见:(

谢谢

Solutions Collecting From Web of "如何从地图中删除所有多段线"

在将Polyline添加到地图时跟踪Polyline:

 Polyline polyline = this.mMap.addPolyline(new PolylineOptions().....); 

那么当你想删除它:

 polyline.remove(); 

如果你有很多折线,只要将它们添加到列表中就可以了:

 List<Polyline> polylines = new ArrayList<Polyline>(); for(....) { polylines.add(this.mMap.addPolyline(new PolylineOptions()....)); } 

而当你想删除:

 for(Polyline line : polylines) { line.remove(); } polylines.clear(); 

关键是保持对Polyline对象的引用,并在每个对象上调用.remove()。

我知道这是非常古老的问题,但我注意到这是非常普遍的需要。 我find了另一种方式,我想分享它。

这里是基本的想法:

 Polyline polylineFinal; PolylineOptions polylineOptions; loop { polylineOptions.add( new LatLng( latitude, longitude ) ); } polylineOptions.width(2); polylineOptions.color(Color.RED); polylineOptions.geodesic(true); polylineFinal = map.addPolyline (polylineOptions); 

Map的“addPolyline”方法返回一个包含所有点的多段线。 当我需要删除点时,我称之为polylineFinal的“删除”方法。

 polylineFinal.remove(); 

我用这个工作:)

  private GoogleMap mMapView; SupportMapFragment myMapFragment = (SupportMapFragment)getSupportFragmentManager() .findFragmentById(R.id.mMapView3); mMapView = myMapFragment.getMap(); PolylineOptions rectLine = new PolylineOptions() .add(new LatLng(13.000000, 100.000000)) .add(new LatLng(13.010000, 100.000000)); mMapView.addPolyline(rectLine);