2012-09-10 2 views
0

GPS 공급자의 현재 위치를 기반으로 MapView에 경로를 표시하는 프로젝트를 진행 중입니다. 두 점 사이의 경로를 그릴 수 있지만 위치가 새 점으로 바뀌면 그리기 경로가 지워집니다.GPS 공급자를 사용하여지도에서 장치의 현재 위치를 사용하여 경로를 그립니다.

기본적으로 내 위치 수신기는 현재 GeoPoint을 저장하고 새로운 GeoPoint 위치를 설정 한 다음이 두 점을 기반으로 경로를 그리기 위해 오버레이를 시작합니다. 옵션을 사용하면 좌표를 데이터베이스에 저장 한 다음 당길 수 있습니다 거기에서 정보가 경로를 그립니다. 당신이 말했듯이, 당신이 어딘가에 저장이 좌표가 필요

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

:

여기에 지금까지 내 코드입니다. 데이터베이스 또는 임시 로컬 목록에 저장할 수 있습니다. draw 메소드는 저장 한 모든 좌표간에 반복해야합니다.

+0

데이터베이스에서 정보를 저장하고 가져 오는 것이 가장 효율적인 방법입니까? –

+0

임시 경로로는 목록에 저장합니다. 나중에 값을 저장하거나 여러 경로가 그려 지길 원하면 sqlite 데이터베이스로 이동하십시오. –