2012-03-26 3 views
0

두 지점 사이에 선을 그려야하는 프로그램이 있습니다. 그런 다음 다른 두 점 사이에 다른 선을 그립니다. 한 줄을 그릴 때 이전 줄이 제거됩니다. 두 줄을 다른 오버레이로 만들려고 시도했지만 여전히 줄을 제거하고 줄 바꿈을합니다. 이 문제를 방지하고 모든 오버레이를 유지하는 방법은 무엇입니까? 어떤 도움이라도 대단히 감사하겠습니다.어떻게 여러 개의지도 오버레이를 화면에 그립니 까?

Activity 클래스 내부의 오버레이 클래스입니다.

는 onKeyDown에에()

case KeyEvent.KEYCODE_8: 
      twoPoints.add(a); 
      twoPoints.add(b); 

      MapOverlay newOverlay = new MapOverlay(); 
      listOfOverlays = mapView.getOverlays(); 
      listOfOverlays.add(newOverlay); 

      mapView.postInvalidate(); 
      System.out.println("Test overlays 1 Point"); 

      break; 

     case KeyEvent.KEYCODE_9: 
      twoPoints.remove(1); 
      twoPoints.add(c); 

      MapOverlay newOverlay1 = new MapOverlay(); 
      listOfOverlays.add(newOverlay1); 
      mapView.postInvalidate(); 

      System.out.println("Test Overlays 2 Point"); 
      break; 

그리고 이것은 오버레이 클래스입니다 : 정말 잠시 동안 지금 나를 혼란 된

public class MapOverlay extends com.google.android.maps.Overlay 
    {   
    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) 
    {  
     super.draw(canvas,mapView,shadow); 

     //-- Create new paint object -- 
     Paint mPaint = new Paint(); 
     mPaint.setDither(true); 
     mPaint.setColor(Color.RED); 
     mPaint.setStyle(Paint.Style.STROKE); 
     mPaint.setStrokeJoin(Paint.Join.ROUND); 
     mPaint.setStrokeCap(Paint.Cap.ROUND); 
     mPaint.setStrokeWidth(2); 

     //System.out.println("Point 1"); 


      //System.out.println("Point 2"); 

      for(int i =0; i < twoPoints.size()-1;i++) 
      { 
       Point screenPt1 = new Point(); 
       mapView.getProjection().toPixels(twoPoints.get(i), screenPt1); 

       Point screenPt2 = new Point(); 
       mapView.getProjection().toPixels(twoPoints.get(i+1), screenPt2); 

       canvas.drawLine(screenPt1.x, screenPt1.y, screenPt2.x, screenPt2.y, mPaint); 

       System.out.println("Point 3"); 
      } 

     //mapView.invalidate(); 
    } 
} 

.

+0

내가 얻은 질문에 2 점 사이의 길 찾기를 표시하겠습니까? 내가 맞습니까? – Prem

+0

방향을 원한다면 Google지도 웹 서비스를 사용해야합니다. – Prem

답변

0

Eyespyus가 올바른 길을 걷고 있는데 문제는 내가 오버레이 클래스를 사용하여 두 가지 모두 사용 된 배열을 변경하고 있다는 것입니다. 클래스를 활동 외부로 이동하면 문제가 해결되었습니다.

이것은 정말 어리석은 실수였습니다. 나는 이것을 보면서 시간을내어 주신 모든 분들께 감사 드리며, 저는 Android에 매우 익숙합니다.

0

twoPoint이 정의되어 있습니까? 문제는 두 오버레이 모두 같은 배열의 점 twoPoint을 사용하여 작업하는 것으로 나타납니다.

관련 문제