2010-06-14 4 views
4

오버레이를 확장하고 Overlay.Snappable을 구현하는 클래스가 있습니다. 당신이 볼 수 있듯이, 내가지도에서 지점의 목록을안드로이드 - 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로 설정하면 화면에 아무 것도 나타나지 않지만 스트로크로 설정하고 획 너비를 설정하면 문제가되는 부분이 실제로 그려집니다. 무승부.

이제 해결책을 찾았지만 아무 것도 나오지 않습니다. 오버레이 캔버스에서 드로잉을 할 때 코드 자체에서 설정하지 못한 것이 있거나 몇 가지 제약이 있습니까?

감사합니다.

답변

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

관련 문제