在安卓上绘制两个地理坐标之间的平滑线条

6
我已经在地理点之间画了一条线。它成功地被画出来了。当我们看到地图时,相邻的下一条线看起来像素化了。如何合并这条线?
我的代码如下:
@Override
public void draw(Canvas canvas, MapView mapview, boolean shadow) {
    super.draw(canvas, mapview, shadow);
    if(! routeIsActive) return;

    mapview.getProjection().toPixels(locpoint, pp);       // Converts GeoPoint to screen pixels

    int xoff = 0;
    int yoff = 0;
    int oldx = pp.x;
    int oldy = pp.y;
    int newx = oldx + xoff;
    int newy = oldy + yoff;

    paint.setAntiAlias(true);
    paint.setDither(true);
            paint.setStrokeWidth(7);
    for(int i=0; i<numberRoutePoints-1; i++)
    {
        switch(routeMode.get(i))
        {
        case 0:
            paint.setColor(Color.parseColor("#666666"));
            break;
        case 1:
            paint.setColor(Color.parseColor("#0EA7D6"));
            break;
        case 2:
            paint.setColor(Color.parseColor("#654321"));
            break;
        case 3:
            paint.setColor(Color.parseColor("#123456"));
            break;
        }   

        mapview.getProjection().toPixels(routePoints.get(i), pold);
        oldx = pold.x;
        oldy = pold.y;
        mapview.getProjection().toPixels(routePoints.get(i+1), pnew);
        newx = pnew.x;
        newy = pnew.y;

        canvas.drawLine(oldx, oldy, newx, newy, paint);
    }

}
2个回答

3
你应该像这样改变绘制对象的样式:
paint.setStrokeCap(Cap.ROUND);

2

如果在每条线的开头和结尾画一个圆圈(圆的直径必须是行高),我认为这样就可以了,或者也许canvas的drawRoundRect可以很好地完成它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接