2012-12-11 43 views
0

我想繪製谷歌地圖上的兩個geopoints之間的界限。我可以放置標記,但不能在它們之間畫線。我知道我錯過了一些微不足道的東西。DrawLine谷歌地圖不工作,谷歌地圖上的第一個定時器Android

//subscribedToMap is a MapView 
subscribedToMap.getOverlays().add(new PathMarker(journey.getSourceGPSX(), 
        journey.getSourceGPSY(), 
        journey.getDestinationGPSX(), 
        journey.getDestinationGPSY())) ; 
subscribedToMap.invalidate(); 

public class PathMarker extends Overlay { 
    private Double slat, slng, dlat, dlng; 

    public PathMarker(Double slat, Double slng, Double dlat, Double dlng) { 
     super(); 
     this.slat = slat; 
     this.slng = slng; 
     this.dlat = dlat; 
     this.dlng = dlng; 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
     canvas.drawLine(slat.intValue(), slng.intValue(), dlat.intValue(), 
       dlng.intValue(), new Paint()); 
     super.draw(canvas, mapView, shadow); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
     return (super.onTouchEvent(event, mapView)); 
    } 
} 

編輯:我甚至嘗試

public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
    super.draw(canvas, mapv, shadow); 

    Paint mPaint = new Paint(); 
    mPaint.setDither(true); 
    mPaint.setColor(Color.RED); 
    mPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
    mPaint.setStrokeJoin(Paint.Join.ROUND); 
    mPaint.setStrokeCap(Paint.Cap.ROUND); 
    mPaint.setStrokeWidth(2); 

    GeoPoint gP1 = new GeoPoint(19240000,-99120000); 
    GeoPoint gP2 = new GeoPoint(37423157, -122085008); 

    Point p1 = new Point(); 
    Point p2 = new Point(); 
    Path path = new Path(); 

    projection.toPixels(gP1, p1); 
    projection.toPixels(gP2, p2); 

    path.moveTo(p2.x, p2.y); 
    path.lineTo(p1.x,p1.y); 

    canvas.drawPath(path, mPaint); 
} 
+0

與其說是直接回答你的問題,但你希望簽出v2谷歌地圖Android API在一週前發佈。它使多段線更容易一些。 https://developers.google.com/maps/documentation/android/ –

回答

0

瑣碎的錯誤,並沒有創造GeoPoints正確

GeoPoint gP1 = new GeoPoint((int)(slat * 1E6),(int) (slng * 1E6)); 
GeoPoint gP2 = new GeoPoint((int)(dlat * 1E6),(int) (dlng * 1E6));