如何在Android中的mapview上方绘制一个圆圈?

时间:2012-10-02 07:47:57

标签: android google-maps android-canvas

我想在Android上的Google Maps MapView上面的图层上绘制一个圆圈。 我的意思是 - 在mapview的中心有一个红色圆圈,但无论我在哪里移动我的地图 - 这个圆圈应该始终位于我视图的中心 - 就像mapview上面的一层。

你能告诉我怎么做吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用FrameLayout,其第一个孩子将是MapView,其第二个孩子将成为您的圈子(Gravity = CENTER)。

答案 1 :(得分:0)

为什么不使用简单的叠加?类似的东西:

public class MapDemo extends MapActivity  { 
    MapView mMapView;
    CircleOverlay mCOverlay;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GeoPoint mapCentrePoint = new GeoPoint(51500000, 0);
        mMapView = (MapView) findViewById(R.id.mapview);
        MapController mapCtrlr = mMapView.getController();
        mapCtrlr.setZoom(8);
        mapCtrlr.setCenter(mapCentrePoint);
        List<Overlay> listOfOverlays = mMapView.getOverlays();
        mCOverlay = new CircleOverlay(50.0f);
        listOfOverlays.add(mCOverlay);
    }

    @Override
    protected boolean isRouteDisplayed() {return false;}

    public class CircleOverlay extends com.google.android.maps.Overlay {
        Paint mPaint;
        float mRadius;
        public CircleOverlay(float radius) {
            super();
            mRadius = radius;
            mPaint = new Paint();
            mPaint.setColor(Color.RED);
            mPaint.setStyle(Style.STROKE);
            mPaint.setStrokeWidth(2);
        }
        @Override
        public boolean draw(Canvas canvas, MapView mv, boolean shadow,
                long when) {
            canvas.drawCircle(mv.getWidth()/2, mv.getHeight()/2, 
                    mRadius, mPaint);
            return false;
        }
    }
}

答案 2 :(得分:-1)