1

地図上に を描画しCircle、ユーザーがそれに触れたときに何かをしたいです。また、それについての方法が見つかりませんCircle。私は何をする必要がありますか?

ありがとう、サルン

編集

私の質問を明確にするために。地面に対して一定の距離を持つ円が必要です。つまり、マップをズームすると、円が大きくなります。

4

2 に答える 2

3

を使用してそれを行うことができますOnMapClickListener

コールバックで、クリックLatLngした場所と の中心の間の距離Circleが半径よりも小さいかどうかを確認します。

Location.distanceBetween何らかの助けになるはずです。

于 2013-10-06T15:15:48.167 に答える
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();
    }
}
于 2013-10-06T13:32:07.430 に答える