7

AndroidデバイスでGPSを使用してトラックをプロットしたい。

完成したルートを表示するのに問題はありませんが、移動中にトラックを表示するのが難しいと感じています。

これまでのところ、私はそれを行うための2つの異なる方法を見つけましたが、どちらも特に満足のいくものではありません。

方法1

PolylineOptions track = new PolylineOptions();
Polyline poly;

while (moving) {
    Latlng coord = new LatLng(lat,lng);    // from LocationListener
    track.add(coord);
    if (poly != null) {
        poly.remove();
    }
    poly = map.addPolyline(track);
}

つまり、新しい座標を追加してから再度追加する前に、ポリラインを作成して削除します。

これはひどく遅いです。

方法2

oldcoord = new LatLng(lat,lng);;

while (moving) {
    PolylineOptions track = new PolylineOptions();
    LatLng coord = new (LatLng(lat,lng);
    track.add(oldcoord);
    track.add(coord);
    map.addPolyline(track);

    oldcoord = coord;
}

つまり、一連の単一のポリラインをプロットします。

これは方法1よりもはるかに高速にレンダリングされますが、特に低いズームレベルでは、各ポリラインが四角になり、実際に接触するのはコーナーのみであるため、かなりギザギザに見えます。

より良い方法はありますか?もしそうなら、それは何ですか?

4

1 に答える 1

9

2.0MapsAPIを使用した簡単なソリューションがあります。次の3つの手順を使用して、スムーズなルートラインを取得できます。

  1. 次のようなLatLngポイントのリストを作成します。

    List<LatLng> routePoints;
    
  2. ルートポイントをリストに追加します(ループで実行できます/実行する必要があります)。

    routePoints.add(mapPoint);
    
  3. ポリラインを作成し、LatLngポイントのリストをそのようにフィードします。

    Polyline route = map.addPolyline(new PolylineOptions()
      .width(_strokeWidth)
      .color(_pathColor)
      .geodesic(true)
      .zIndex(z));
    route.setPoints(routePoints);
    

試してみる!

于 2013-04-13T03:18:10.233 に答える