2013-03-26 5 views
6

Android搭載端末でGPSを使用して軌跡を描きたいAndroid搭載端末で移動軌跡を表示する方法

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

これまでは2つの方法がありましたが、どちらも特に満足できるものではありませんでした。

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

すなわち新しい座標を追加し、それをバック追加する前にそれを削除するポリラインを構築します。

これは恐ろしく遅いです。

METHOD 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よりもはるかに高速レンダリング一方で、各ポリラインがオフに乗されているので、それは特に低ズームレベルで、かなりギザギザに見え、それが実際に触れるだけのコーナーです。

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

答えて

8

2.0 Maps APIを使用する簡単な解決策があります。あなたは3つの手順を使用して、素敵なスムーズなルート線を取得します:

List<LatLng> routePoints; 
  • /行われるべきである可能性があり(リストにルートポイントを追加します。

    1. は、以下のような緯度経度点のリストを作成します)ループで:

      routePoints.add(mapPoint); 
      
    2. はポリラインを作成し、それを等緯度経度点のリストを送り:

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

    試してみてください!

  • +0

    お返事ありがとうございます。私は最終的にこれを思いついた(私の方法1)。私が問題を抱えていたのは、ポリラインを構築して削除する座標のArrayListを反復して、処理が永遠に終わっていたということでした。しかし、その処理をonChangeListenerにオフロードしたとき、それは魅力的なように機能しました。 –

    +0

    @PeteHあなたは方法routePoints.add(MapPointの)でMapPointのあるものを、私に知らせpleasseことができます。 – Keshav1234

    +0

    MapPointのは単に地図表示のための個々のLatLngオブジェクト、すなわち、所望の点の一つであります – PeteH

    関連する問題