如何从地图中删除所有折线
Posted
技术标签:
【中文标题】如何从地图中删除所有折线【英文标题】:How to remove all the polylines from a map 【发布时间】:2013-01-28 23:18:56 【问题描述】:关注
How to draw a path between two markers
我不得不在两个标记之间添加很多折线,以形成一条路径。
其中一个标记是可拖动的,假设源是可拖动的。
因此,当用户开始拖动标记时,必须擦除先前绘制的路径,并且必须在新源和目标之间绘制一条新路径。
我可以画出新的路径,但是我怎样才能抹去之前的路径呢?
这是绘制路径的方式:
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));
我能得到的一个解决方案是
map.clear();
清除所有的折线、标记等。重新添加标记,然后绘制路径。
但是一旦我开始拖动,标记就会被清除,因此在地图上不可见:(
谢谢
【问题讨论】:
【参考方案1】:在将折线添加到地图时跟踪它:
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();
关键是保持对折线对象的引用并在每个对象上调用 .remove()。
【讨论】:
谢谢 :) 它帮助了【参考方案2】:我知道这是一个非常古老的问题,但我注意到这是非常普遍的需求。我找到了另一种方法,我想分享它。
基本思路如下:
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 的“remove”方法。
polylineFinal.remove();
【讨论】:
【参考方案3】:更新
如果您想从地图中删除所有标记、折线、多边形、叠加层等,请使用
mMap.clear(); //it will remove all additional objects from map
如果您只想删除所有或单个折线、多边形、标记等,请参阅上面的@DiskDev Answer。在这种情况下,您必须跟踪添加到地图的每个附加对象
【讨论】:
以上是关于如何从地图中删除所有折线的主要内容,如果未能解决你的问题,请参考以下文章