2012-09-10 39 views
0

我正在根據GPS提供者的當前位置在MapView中顯示路線。我可以繪製兩點之間的路徑,但是當位置變爲新點時,問題就會開始,導致繪製路徑被擦除。使用GPS提供商在地圖上使用當前位置繪製路線

基本上我的位置監聽器保存當前GeoPoint並設置新GeoPoint位置之後,它開始覆蓋繪製基於這兩個points.I的路徑思考的一個選項,可以將座標保存到數據庫,然後拉從那裏獲取信息來繪製路徑。

這是到目前爲止我的代碼:

private class MyLocationListener implements LocationListener { 

    public void onLocationChanged(Location location) { 

    Toast.makeText(getBaseContext(), "Tracking device..", 
          Toast.LENGTH_SHORT).show(); 

      gp2 = new GeoPoint(
        gp1.getLatitudeE6(), 
        gp1.getLongitudeE6()); 

      gp1 = new GeoPoint(
        (int) (location.getLatitude() * 1000000), 
        (int) (location.getLongitude() * 1000000)); 


    myOverlay = new MapOverlay(); 

    mapOverlays_route.add(myOverlay); 
    myMapView.invalidate(); 
} 
} 


class MapOverlay extends com.google.android.maps.Overlay{ 

     public MapOverlay(){ 


     } 


     public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
     super.draw(canvas, mapv, shadow); 

     //Configuring the paint brush 

     Paint mPaint = new Paint(); 
     mPaint.setDither(true); 
     mPaint.setColor(Color.RED); 
     mPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
     mPaint.setStrokeJoin(Paint.Join.ROUND); 
     mPaint.setStrokeCap(Paint.Cap.ROUND); 
     mPaint.setStrokeWidth(4); 




     Point p1 = new Point(); 
     Point p2 = new Point(); 
     Path path1 = new Path(); 


     Path path2 = new Path(); 
     projection.toPixels(gp1, p1); 
     projection.toPixels(gp2, p2); 

     path1.moveTo(p2.x, p2.y);//current location 
     path1.lineTo(p1.x,p1.y);//new location 


     canvas.drawPath(path1, mPaint);//drawing the path 

     } 

     } 

回答

0

就像你說的,你需要有地方存放這些座標。這些可以存儲在數據庫或更臨時的本地列表中。繪製方法還必須在您存儲的所有座標之間進行迭代。

+0

存儲並從數據庫中提取信息是最有效的方法嗎? –

+0

對於臨時路線,我會將它存儲在一個列表中。如果你想稍後存儲值或者繪製多條路徑,我會去sqlite數據庫。 –

相關問題