1

アプリのマップ ビューに塗りつぶされたポリゴンを描画しようとしています。何を試しても塗りつぶされません。ストロークを表示することはできますが、塗りつぶすことはできません。以下は、私のポリゴン クラスの draw メソッドです。オーバーレイをオーバーライドします。

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

            Paint mPaint = new Paint();

            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setColor(Color.BLACK);
            mPaint.setStrokeJoin(Paint.Join.ROUND);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStrokeWidth(6);

            Paint mPaintFill = new Paint();

            mPaintFill.setStyle(Paint.Style.FILL);
            mPaintFill.setColor(Color.GREEN);

            Path path = new Path();

            GeoPoint start = route.get(0);
            for (int i = 1; i < route.size(); ++i) {
                    Point p1 = new Point();
                    Point p2 = new Point();

                    Projection projection = mapv.getProjection();
                    projection.toPixels(start, p1);
                    projection.toPixels(route.get(i), p2);

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

                    start = route.get(i);
            }              


            canvas.drawPath(path, mPaint);
            canvas.drawPath(path, mPaintFill);
            //canvas.clipPath(path, Op.DIFFERENCE); 
    }

上記のコードは線を正しく描画しますが、塗りつぶされません。 canvas.drawPath(path, mPaint); の削除 塗りつぶしをそのままにしておくと、マップには何も表示されません。Paint.Style.STROKE を Paint.Style.FILL_AND_STROKE に設定してみました。私は完全に途方に暮れており、この時点で、それは私が見落としている単純なものだと考えています。

4

0 に答える 0