2012-03-26 152 views
0

我有一个程序,我想在两点之间划一条线。然后我想要另一条线在另外两个点之间绘制。当我绘制一条线时,它会删除上一行。我试图让两条线不同叠加,但它仍然删除旧线并放入新线。我是否防止这种情况发生,以及如何使所有叠加层保持不变?任何帮助将不胜感激。如何在屏幕上绘制多个地图叠加层?

Activity类中的Overlay类。

这是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 2012-03-27 06:06:12

+0

如果你想方向,那么我建议你应该使用谷歌地图Web服务.... – Prem 2012-03-27 06:06:58

回答

0

Eyespyus在正确的轨道上,问题是我在活动中有Overlay类,并且正在改变两个都使用的数组。将课程移到活动外部解决了问题。

这是一个非常愚蠢的错误,我感谢大家花时间看这个,我对Android非常陌生。

0

twoPoint定义在哪里?问题似乎是两个叠加使用相同的点twoPoint来完成他们的工作。