2012-11-18 36 views

回答

1

創建您自己的Overlay類(而不是使用ItemizedOverlay用於顯示標記)並實施draw()方法來繪製線條。加入您使用顯示標記,像這樣的正常覆蓋在此之前覆蓋添加到您的MapView

mMapView.getOverlays().add(mPathOverlay); 
mMapView.getOverlays().add(mMarkersOverlay); 

一個PathOverlay類可以是這樣的。職位將是您的標記的位置,已經轉換爲GeoPoint s。

public class PathOverlay extends Overlay { 

    private List<GeoPoint> mPositions; 
    private Path mPath; 
    private Paint mPathPaint; 
    private Point mHelperPoint = new Point(); 

    public PathOverlay(List<GeoPoint> positions) { 
     mPositions = positions; 
     mPath = new Path(); 
     mPathPaint = new Paint(); 
     mPathPaint.setColor(0xDDA4C639); 
     mPathPaint.setStyle(Paint.Style.STROKE); 
     // add more path styling here 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
     if (shadow) { 
      return; // path has no shadow 
     } 
     mPath.reset(); 
     boolean start = true; 
     Point prev = new Point(); 
     for (Position p : mPositions) { 
      mapView.getProjection().toPixels(p.geoPoint, mHelperPoint); 
      if (start) { 
       mPath.moveTo(mHelperPoint.x, mHelperPoint.y); 
       prev.set(mHelperPoint.x, mHelperPoint.y); 
       start = false; 
      } else { 
       int dx = prev.x - mHelperPoint.x; 
       int dy = prev.y - mHelperPoint.y; 
       mPath.lineTo(mHelperPoint.x, mHelperPoint.y); 
       prev.set(mHelperPoint.x, mHelperPoint.y); 
      } 
     } 
     canvas.drawPath(mPath, mPathPaint); 
    } 
} 
相關問題