需要在用户位置周围使用不同颜色的镶边圆圈

时间:2013-06-12 06:15:40

标签: android android-layout android-maps android-maps-v2

如果我的问题太简单,请道歉。

我正在开发一个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);
    }

使用上面的代码,我可以完美地围绕用户的位置获得一个蓝色圆圈。

现在,我需要为不同颜色的圆圈设置边框。也就是说,带有粗体边框(不同颜色)的圆圈。

对此有任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

您需要创建一个单独的Paint对象,其STROKE样式集使用Paint.setStyle和不同颜色设置。

如果你有这个新drawCircle再次致电Paint

答案 1 :(得分: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);
    }