Android:谷歌地图v2绘制可拖动圈子

时间:2013-05-31 03:53:02

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

我需要在某个给定位置绘制一些半径的圆,可以将其拖动到地图上的其他某个点 我可以像这样画圆圈

mMap.addCircle(new CircleOptions().center(circleLocation).radius(10).strokeColor(Color.RED).fillColor(Color.RED));

现在我需要在地图上拖动这个圆圈,这样当我点击这个圆形地图时会被锁定并且在移动我的手指时,这个圆圈应该在圆圈上移动而不是自己的地图

提前致谢!!!

3 个答案:

答案 0 :(得分:1)

我不知道如何处理形状,但另一种方法是使用标记。它没有确切的结果,因为标记被刷新到屏幕视图,而不是刷新到地图,但它确实内置了拖动支持。您需要创建一个圆形图像。

map.addMarker(new MarkerOptions()
         .position(MELBOURNE)
         .title("Melbourne")
         .draggable(true)
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.circle)));

答案 1 :(得分:1)

  1. View
  2. 上方添加SupportMapFragment
  3. OnTouchListener添加到此View
  4. 检测用户是否在DOWN事件中按下了圆圈。您必须使用Projection的组合将x,y转换为LatLngLocation.distanceBeetween
  5. 如果用户未按内圈,请返回false以提供处理事件的地图机会
  6. 如果用户在圈内按下,请返回true并保存相关变量
  7. 在MOVE事件中继续使用Projection根据初始和新x,y计算新中心

答案 2 :(得分:-1)

以下是在地图上方绘制圆圈的代码,

    CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)); // In meters

// Get back the mutable Circle
Circle circle = myMap.addCircle(circleOptions);

GoogleMap没有触控侦听器,因此您必须覆盖onTouchEvent以使MapFragment的父视图拖动您的圆圈。