54

続く

2 つのマーカー間にパスを描く方法

パスを作成するには、2 つのマーカーの間に多数のポリラインを追加する必要がありました。

マーカーの 1 つがドラッグ可能で、ソースがドラッグ可能であるとしましょう。

したがって、ユーザーがマーカーのドラッグを開始すると、以前に描画されたパスが消去され、新しいソースと宛先の間の新しいパスが描画される必要があります。

新しいパスを描くことはできますが、以前のパスを消去するにはどうすればよいですか?

パスの描画方法は次のとおりです。

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

私が得ることができる1つの解決策は

map.clear();

すべてのポリライン、マーカーなどをクリアして、マーカーを再度追加してから、パスを描画します。

しかし、ドラッグを開始するとすぐに、マーカーがクリアされるため、マップに表示されません:(

ありがとうございました

4

3 に答える 3

139

ポリラインをマップに追加するときに、ポリラインを追跡します。

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() を呼び出すことです。

于 2013-02-13T19:35:04.837 に答える