2012-03-26 10 views
0

私は2点間に線を描きたいプログラムを持っています。私は別の2つの点の間に別の線を描きたい。私は1行を描くと前の行を削除します。私は両方のラインを異なるオーバーレイにしようとしましたが、それでも古いラインを削除して新しいラインに配置します。これを防ぐために、どうすればすべてのオーバーレイを維持できますか?どんな助けでも大歓迎です。複数のマップオーバーレイを画面に描画するにはどうすればよいですか?

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

Directionが必要な場合は、Google Maps Webサービスを使用することをお勧めします。 – Prem

答えて

0

Eyespyusが正しく軌道に乗っていたのは、私がアクティビティでOverlayクラスを持っていて、両方が使用していた配列を変更していたことでした。アクティビティの外でクラスを移動すると問題が解決しました。

これは本当にばかげた間違いでした。私はこのことを見るために時間を割いてくれてありがとう、私はAndroidには非常に新しいです。

0

twoPointが定義されていますか?この問題は、両方のオーバーレイが、同じ作業点の配列twoPointを使用していることが原因です。

関連する問題