1

私の質問が単純すぎることをお許しください。

ユーザーの位置を地図に表示する Android アプリを開発しています。また、ユーザーのポイントの周りに円を表示しています。

ItemizedOverlay でのこれに対する私のコードは次のとおりです。

    public void setGeoPoints(GeoPoint theGeoPoints, int theCircleRadius) 
    {
        this.itsGeoPoints = theGeoPoints;
        itsPaint = new Paint();
        itsPaint.setARGB(10, 0, 0, 205);
        this.itsCircleRadius = theCircleRadius;
    }

    @Override
    public void draw(Canvas theCanvas, MapView theMapView, boolean shadow) 
    {
        super.draw(theCanvas, theMapView, shadow);
        Point pt = theMapView.getProjection().toPixels(itsGeoPoints, null);
        float projectedRadius = theMapView.getProjection().metersToEquatorPixels(itsCircleRadius);
        theCanvas.drawCircle(pt.x, pt.y, projectedRadius, itsPaint);
    }

上記のコードを使用すると、ユーザーの位置を完全に囲む青い円が表示されます。

ここで、円の境界線を別の色にする必要があります。つまり、太い境界線 (別の色) を持つ円です。

これについて何か助けてください。

ありがとうございました。

4

2 に答える 2

1

異なる色を使用して設定されたSTROKEスタイルで別のPaintオブジェクトを作成する必要があります。Paint.setStyle

それができたらdrawCircle、この new でもう一度呼び出しますPaint

于 2013-06-12T06:59:13.947 に答える
0

ありがとうMaciejGórski!

    public void setGeoPoints(GeoPoint theGeoPoints, int theCircleRadius) 
    {
        this.itsGeoPoints = theGeoPoints;

        itsPaint1 = new Paint();
        itsPaint1.setARGB(150, 0, 0, 255);
        itsPaint1.setStyle(Style.STROKE);

        itsPaint2 = new Paint();
        itsPaint2.setStyle(Style.FILL);
        itsPaint2.setARGB(5, 0, 0, 200);
        this.itsCircleRadius = theCircleRadius;
    }

    @Override
    public void draw(Canvas theCanvas, MapView theMapView, boolean shadow) 
    {
        super.draw(theCanvas, theMapView, shadow);

        Point pt = theMapView.getProjection().toPixels(itsGeoPoints, null);
        float projectedRadius = theMapView.getProjection().metersToEquatorPixels(itsCircleRadius);

        theCanvas.drawCircle(pt.x, pt.y, projectedRadius, itsPaint1);
        theCanvas.drawCircle(pt.x, pt.y, projectedRadius, itsPaint2);
    }
于 2013-06-12T07:24:41.890 に答える