2012-03-26 1 views
0

Ich habe ein Programm, wo ich eine Linie zwischen zwei Punkten zeichnen möchte. Ich möchte dann eine andere Linie zwischen zwei weiteren Punkten zeichnen. Wenn ich eine Linie zeichne, wird die vorherige Linie entfernt. Ich habe versucht, beide Linien verschiedene Überlagerungen zu machen, aber es entfernt noch die alte Linie und setzt die neue Linie ein. Verhindere ich das Hacken und wie mache ich alle Overlays? Jede Hilfe würde sehr geschätzt werden.Wie zeichne ich mehrere Karten-Overlays auf den Bildschirm?

Die Overlay-Klasse in der Activity-Klasse.

Dies ist in 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; 

Und das ist die Overlay-Klasse:

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(); 
    } 
} 

es für eine Weile jetzt verwirrend mich wirklich ist.

+0

Von Ihrer Frage was ich bekomme ist, dass Sie die Wegbeschreibung zwischen 2 Punkten anzeigen möchten? Habe ich recht? – Prem

+0

Wenn Sie Richtung möchten, empfehle ich Ihnen, den Google Maps Web Service zu verwenden .... – Prem

Antwort

0

Eyespyus war auf der richtigen Spur das Problem war, dass ich die Overlay-Klasse in der Aktivität hatte und das Array änderte, die beide verwendeten. Durch das Verschieben der Klasse außerhalb der Aktivität wurde das Problem behoben.

Das war ein wirklich dummer Fehler und ich danke allen, dass sie sich die Zeit genommen haben, sich das anzuschauen, ich bin neu in Android.

0

Wo ist twoPoint definiert? Das Problem scheint zu sein, dass beide Overlays dasselbe Array von Punkten twoPoint verwenden, um ihre Arbeit zu erledigen.