2011-01-31 88 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個地理點之間的界限?或一些延遲功能。 – user596712 2011-02-01 09:02:21

0

我懷疑你需要改變這一行:

 mPaint.setStyle(Style.FILL);

到:

 mPaint.setStyle(Style.STROKE);

此外,雖然它可能不涉及d對你的問題,看起來你打電話super.draw兩次,一次開始,一次結束。您可能只想在開始時調用它。

相關問題