如何从地图中删除所有折线

时间:2013-02-13 12:00:12

标签: android google-maps google-maps-android-api-2

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

要清除所有折线,标记等..并再次添加标记,然后绘制路径。

但是一旦我开始拖动,标记就会被清除,因此在地图上看不到:(

谢谢

4 个答案:

答案 0 :(得分:117)

在将折线添加到地图时跟踪折线:

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()。

答案 1 :(得分:8)

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

这是基本的想法:

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&#39; addPolyline&#34; method返回包含所有点的单个折线。当我需要删除积分时,我称之为polylineFinal&#34;&#34;删除&#34;方法

polylineFinal.remove();

答案 2 :(得分:1)

更新

如果您想从地图使用中删除所有标记,折线,多边形,叠加层等

mMap.clear(); //it will remove all additional objects from map 

,如果您只想删除全部或单个折线,多边形,标记等,请参见上面的@DiskDev Answer。在这种情况下,您必须跟踪添加到地图的每个其他对象

答案 3 :(得分:-6)

我用过这项工作:)

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