Android 使用GPS實時記錄運動路線

jopen 12年前發布 | 55K 次閱讀 Android Android開發 移動開發

使用GPS實時記錄運動路線,沒有經過真機測試但是理論上應該沒問題 等有流量后進行一下性能測試

主要思路就是使用list實時記錄運動坐標 , 繼承 Overlay,并重寫draw方法,在draw方法中通過list的數值畫出path


首先聲明list

    private List<GeoPoint> gPointList = new ArrayList<GeoPoint>();  
繼承Overlay
 class MyOverlay extends Overlay {   
       @Override  
        public void draw(Canvas canvas, MapView mapView, boolean shadow) {   
            // TODO Auto-generated method stub   
            super.draw(canvas, mapView, shadow);  

            //Log.i(TAG, "draw");地圖變化時候不斷重繪
            // 畫筆   
            Paint paint = new Paint();   
            paint.setColor(Color.RED);   
            paint.setDither(true);   
            paint.setStyle(Paint.Style.STROKE);   
            paint.setStrokeJoin(Paint.Join.ROUND);   
            paint.setStrokeCap(Paint.Cap.ROUND);   
            paint.setStrokeWidth(2);   
            Projection projection = mapView.getProjection();  
            Path path = new Path();
            if (gPointList.size()>1) {//2
                Point p1 = new Point(); 
                projection.toPixels(gPointList.get(0), p1);  
                path.moveTo(p1.x, p1.y); 
                for (int i = 0; i < gPointList.size()-1; i++) {
                     Point p2 = new Point(); 
                     projection.toPixels(gPointList.get(i+1), p2); 
                     path.lineTo(p2.x, p2.y); 
                     Log.i(TAG, ""+p2.x+""+p2.y);

                }
            canvas.drawPath(path, paint);// 畫出路徑   
            }

        }   
    }   

顯示在map上

//繪制路徑

   gpoint1 = new GeoPoint((int) (lat * 1000000),     
               (int) (lng * 1000000));     
    gPointList.add(gpoint1);  
    myOverlay = new MyOverlay();  
    overlays.add(myOverlay);  

4月20日 發現 如果放到線程里 貌似更好 可以設置多少時間取樣

    class ThreadGetRoute implements Runnable {  
            public void run() {  

                try {  
                    gpoint1 = new GeoPoint((int) (lat * 1000000),  
                            (int) (lng * 1000000));  
                    gPointList.add(gpoint1);  
                    myOverlay = new MyOverlay();  
                    overlays.add(myOverlay);  
                    Thread.sleep(10000);  

                } catch (Exception e) {  
                    e.printStackTrace();  
                }  

            }  
        }  
Android 使用GPS實時記錄運動路線

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!