我可以将侦听器添加到地图上绘制的圆圈吗?

时间:2013-10-06 13:21:44

标签: android google-maps-android-api-2

我想在地图上绘制Circle并在用户触摸时执行某些操作。另外,我找不到Circle的任何方法。我需要做什么?

谢谢, Sarun

修改

为了澄清我的问题。我想要相对于地面具有恒定距离的圆圈,这意味着,如果我缩放地图,圆圈将变得更大。

2 个答案:

答案 0 :(得分:3)

您可以使用OnMapClickListener

执行此操作

在回调检查中,点击的LatLngCircle的中心之间的距离是否小于半径。

Location.distanceBetween应该有所帮助。

答案 1 :(得分:1)

暂时忘记答案。也许你正在寻找的是标记。 https://developers.google.com/maps/documentation/android/marker#customize_the_marker_image

以下是自定义标记以圈出的示例。

private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
  private Marker melbourne = mMap.addMarker(new MarkerOptions()
                            .position(MELBOURNE)
                            .title("Melbourne")
                            .snippet("Population: 4,137,400")
                            // set your circle pictures here
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.circle_pictures)));

更新

如果在放大时需要圆圈变大。我的建议是,你必须创建一个自定义圆,并使半径变大,放大时缩小。这种方法完全是原生的,你已经编写了自己的代码来适应你需要的一切。

class CircleMarker extends View{

    private Paint paint;
    private float cx,cy,radius;     

    public CircleMarker(Context context) {
        super(context);
        paint = new Paint();
        paint.setColor(Color.BLUE);
    }

    @Override
    public void onDraw(Canvas c){
        c.drawCircle(cx, cy, radius, paint);
    }

    public void redrawCirle(float cx, float cy, float radius){
        this.cx = cx;
        this.cy = cy;
        this.radius = radius;
        invalidate();
    }
}