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再次调用这个新的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 回答