2011-01-31 15 views
0

2つのジオポイントの間に線を描こうとしています。私はマップ上のジオポイントに表示することができます。 うまく動作します。私は2点の間に線を描くことができません。プログラムにはエラーはありませんが、行は表示されません。誰が私が何を変えなければならないか教えてくれますか?Android 2.3を使用して2つのジオポイント間に線を描く

public class HelloMapView extends MapActivity { 
/** Called when the activity is first created. */ 
LinearLayout linearLayout; 
MapView mapView; 
MapController mc; 
GeoPoint p,p1; 

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

     //---translate the GeoPoint to screen pixels--- 
     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(p, screenPts); 

     //---add the marker--- 
     Bitmap bmp = BitmapFactory.decodeResource(
      getResources(), R.drawable.a);    
     canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); 

     //Coordinates 2 

     //---translate the GeoPoint to screen pixels--- 
     Point screenPts1 = new Point(); 
     mapView.getProjection().toPixels(p1, screenPts1); 

     //---add the marker--- 
     Bitmap bmp1 = BitmapFactory.decodeResource(
      getResources(), R.drawable.b);    
     canvas.drawBitmap(bmp1, screenPts1.x, screenPts1.y-50, null); 

     //----------- Start--------------// 

     Projection projection = mapView.getProjection(); 
     Path path = new Path(); 

     Point from = new Point(); 
     Point to = new Point(); 
     projection.toPixels(p, from); 
     projection.toPixels(p1, to); 
     path.moveTo(from.x, from.y); 
     path.lineTo(to.x, to.y); 

     Paint mPaint = new Paint(); 
     mPaint.setStyle(Style.FILL); 
     mPaint.setColor(0xFFFF0000); 
     mPaint.setAntiAlias(true); 
     canvas.drawPath(path,mPaint); 
     super.draw(canvas, mapView, shadow);   


     return true; 
    } 
} 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mapView = (MapView) findViewById(R.id.mapview); 

    mapView.setBuiltInZoomControls(true); 

    mapView = (MapView) findViewById(R.id.mapview); 



    mapView.displayZoomControls(true); 
    mc = mapView.getController(); 
    String coordinates[] = {"12.958998", "77.658998"}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    p = new GeoPoint(
     (int) (lat * 1E6), 
     (int) (lng * 1E6)); 


    String coordinates1[] = {"12.95967","77.64918"}; 
    double lat1 = Double.parseDouble(coordinates1[0]); 
    double lng1 = Double.parseDouble(coordinates1[1]); 

    p1 = new GeoPoint(
     (int) (lat1 * 1E6), 
     (int) (lng1 * 1E6)); 


    mc.animateTo(p); 
    mc.animateTo(p1); 
    mc.setZoom(16); 

    //---Add a location marker--- 
    MapOverlay mapOverlay = new MapOverlay(); 
    List<Overlay> listOfOverlays = mapView.getOverlays(); 
    listOfOverlays.clear(); 
    listOfOverlays.add(mapOverlay);   

    mapView.invalidate(); 


} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
}   

} 

答えて

0

だけで次の行(それは私の作品)を使用し、すべてのパスのものを忘れて:私はあなたがこの行を変更する必要が疑われる

canvas.drawLine(screenPts.x, screenPts.y, screenPts1.x, screenPts1.y, mPaint); 
+0

こんにちは、機能していただきありがとうございます。私は2点間の線を得ています。とにかく、私は2つのジオポイントの間に線を描いている間、何らかのアニメーションを表示できますか?またはいくつかの遅延機能。 – user596712

0

を:

 mPaint.setStyle(Style.FILL);

に:

 mPaint.setStyle(Style.STROKE);

また、おそらく関連していませんがdを問題にすると、super.drawを最初と最後に2回呼び出すように見えます。あなたはたぶん始めにそれを呼びたいと思うでしょう。

関連する問題