0

ArrayList新しいものが見つかるたびLatLngに、現在の速度と車両の最大速度の割合に応じた色のポリラインをGoogleマップに描画する必要があります。

そのために次のコードを使用しています。

 for (int i = 0; i < Route.speeds.size(); i++)
        {
            colorOfGraph = graphColor(Route.speeds.get(i), maxSpeed);
            polylineOptions = new PolylineOptions().addAll(Route.points).width(5).color(colorOfGraph);
            Polyline polyline = googleMap.addPolyline(polylineOptions);
            Route.paths.add(polyline);
        }

ここRoute.speedsで、ArrayListはすべての速度を維持します。maxspeedは車両の変化時maxspeedに変化する車両の最大速度で、ポリラインの色は最大速度の %age に応じて変化します。最大速度が増加すると、前のポリラインの色になります。も変更する必要があるので、もう一度描画する必要があります。ここでの私の質問は、新しい緯度を取得するたびにポリラインを再描画する方法です。

SOこの問題について誰か助けてください。

ありがとうございます。それでは、お元気で

4

1 に答える 1

3

わかりました、「再描画」するPolylineには、2 つのオプションがあります。

  1. を使用して削除してシミュレートしPolyline.remove()ます。次に、 を使用して再度ビルドしPolylineOptions、 を追加しGoogleMap.addPolyline()ます。

  2. ポリラインの属性を変更します。を使用して色を設定し、 を使用setColor(int)してポイントを設定できsetPoints(List<LatLng>)ます。これらのメソッドのいずれかを呼び出した後、ポリラインはマップ上で自動的に再描画されます。

どちらの場合も、作成されたポリラインへの参照を保持する必要がありますが、次の行で既に実行しています。

Route.paths.add(polyline);

私があなたなら、Route.pathsコレクション全体を再作成する必要がないため、2 番目のオプションを使用します。代わりに、ポリラインを 1 つだけ追加する必要があります。つまり、直前に記録されLatLngたものから最後にLatLng記録されたものまでのポリラインです。

于 2013-02-06T05:01:36.583 に答える