2013-03-26 46 views
6

我想在Android設備上使用GPS繪製我的軌跡。如何在Android設備上顯示移動軌跡

我沒有問題顯示完成的路線,但我發現難以顯示跟蹤,因爲我正在移動。

到目前爲止,我找到了兩種不同的方式來做到這一點,但都不是特別令人滿意。

方法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快了很多,它看起來相當參差不齊,特別是在較低的縮放級別,因爲每條線的方形,它僅僅是實際接觸的角落。

有沒有更好的方法,如果是的話,它是什麼?

回答

8

使用2.0 Maps API有一個直接的解決方案。

  1. 創建經緯度點,如列表:你會使用三個步驟得到一個不錯的平滑路徑線

    List<LatLng> routePoints; 
    
  2. 添加路由指向列表(可以/應該做的事在一個循環中):

    routePoints.add(mapPoint); 
    
  3. 創建一個折線和飼料它經緯度點的列表,例如:

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

試試看!

+0

感謝您的回答。我最終自己想出了這個(我的方法1)。我遇到的問題是,當我迭代構建和刪除多段線的座標的ArrayList時,處理將持續進行。但是,當我將該處理卸載到onChangeListener時,它的工作就像一個魅力。 – 2013-04-17 18:22:45

+0

@PeteH你能不能告訴我,方法routePoints.add(mapPoint)中mapPoint是什麼? – Keshav1234 2015-05-14 12:26:15

+0

mapPoint只是一個單獨的LatLng對象,即您的地圖顯示所需的一個點 – PeteH 2015-05-23 05:51:14

相關問題