2010-06-14 104 views
4

我有一個擴展覆蓋和實現Overlay.Snappable的類。我已經重寫了方法:Android - 在MapView上繪製路徑作爲覆蓋圖

@Override 
public void draw(Canvas canvas, MapView mv, boolean shadow) 
{ 
    Projection projection = mv.getProjection(); 
    ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>(); 
    //Creating geopoints - ommited for readability 
    Path p = new Path(); 
    for (int i = 0; i < geoPoints.size(); i++) { 
    if (i == geoPoints.size() - 1) { 
     break; 
    } 
    Point from = new Point(); 
    Point to = new Point(); 
    projection.toPixels(geoPoints.get(i), from); 
    projection.toPixels(geoPoints.get(i + 1), to); 
    p.moveTo(from.x, from.y); 
    p.lineTo(to.x, to.y); 
    } 
    Paint mPaint = new Paint(); 
    mPaint.setStyle(Style.FILL); 
    mPaint.setColor(0xFFFF0000); 
    mPaint.setAntiAlias(true); 
    canvas.drawPath(p, mPaint); 
    super.draw(canvas, mv, shadow); 
} 

正如你所看到的,我做一個地圖上的點的名單,我想他們形成一個多邊形。

現在,問題是,當我將油漆風格設置爲FILL或FILL_AND_STROKE時,屏幕上沒有任何東西顯示出來,但是當我將它設置爲只是筆畫並設置筆畫寬度時,它實際上繪製了它應該顯示的內容畫。

現在,我尋找解決方案,但沒有出現。你能告訴我是否錯過了在代碼本身中設置的東西,或者在Overlay畫布上繪圖時是否存在某些約束條件?

謝謝

回答

4

有幾件事。您只能使用p.moveTo(from.x, from.y);一次,即第一次當您想要第一次使用時。

試試這個設置用於繪製多邊形的paint對象的屬性。

polygonPaint = new Paint(); 
polygonPaint.setStrokeWidth(2); 
polygonPaint.setStyle(Paint.Style.STROKE); 
polygonPaint.setAntiAlias(true); 

希望這會有所幫助。

+0

感謝您的回答,問題是多次調用moveTo。 – Rabas 2010-06-15 11:17:21