3

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

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

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

提前致谢!!!

4

3 回答 3

1
  1. View在上面添加一个SupportMapFragment
  2. 添加OnTouchListener到此View
  3. 检测用户是否在 DOWN 事件中按下圆圈内。您将不得不使用组合Projection将 x,y 转换为LatLngandLocation.distanceBeetween
  4. 如果用户没有在圈内按下,返回false给地图机会处理事件
  5. 如果用户在圆圈内按下,返回true并保存相关变量
  6. 在 MOVE 事件上继续使用Projection基于初始和新 x,y 计算新中心
于 2013-05-31T05:19:35.197 回答
1

我不知道如何处理形状,但一种选择是使用标记。它没有确切的结果,因为标记与屏幕视图齐平而不是与地图齐平,但它确实具有内置的拖动支持。您需要创建一个圆形图像。

map.addMarker(new MarkerOptions()
         .position(MELBOURNE)
         .title("Melbourne")
         .draggable(true)
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.circle)));
于 2013-05-31T04:42:47.013 回答
-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 没有触摸监听器,因此您必须为 MapFragment 的父视图覆盖 onTouchEvent 才能拖动您的圆圈。

于 2013-05-31T04:53:19.180 回答