地図上に を描画しCircle
、ユーザーがそれに触れたときに何かをしたいです。また、それについての方法が見つかりませんCircle
。私は何をする必要がありますか?
ありがとう、サルン
編集
私の質問を明確にするために。地面に対して一定の距離を持つ円が必要です。つまり、マップをズームすると、円が大きくなります。
地図上に を描画しCircle
、ユーザーがそれに触れたときに何かをしたいです。また、それについての方法が見つかりませんCircle
。私は何をする必要がありますか?
ありがとう、サルン
編集
私の質問を明確にするために。地面に対して一定の距離を持つ円が必要です。つまり、マップをズームすると、円が大きくなります。
を使用してそれを行うことができますOnMapClickListener
。
コールバックで、クリックLatLng
した場所と の中心の間の距離Circle
が半径よりも小さいかどうかを確認します。
Location.distanceBetween
何らかの助けになるはずです。
今の答えは忘れてください。多分あなたが探しているのはマーカーです。 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();
}
}