安卓:谷歌地图V2绘制可拖动圆形

3

我需要在地图上某个给定的位置画出一定半径的圆形,该圆形可以被拖动到其他位置。我可以像这样很好地画圆形:

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

现在,我需要将这个圆圈拖动到地图上,当我点击这个圆圈时,地图被锁定,当我移动手指时,这个圆圈应该在圆圈上移动而不是地图本身。
提前感谢!

请查看此库:https://github.com/i-schuetz/map_areas - User
3个回答

1

我不知道如何处理形状,但一个替代方案是使用标记。它没有与地图相平齐的标记结果,因为标记是画在屏幕视图上的,但它确实有内置的拖动支持。您需要创建一个圆形图像。

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

1
  1. SupportMapFragment 上方添加一个 View
  2. 为此 View 添加 OnTouchListener
  3. 检测用户是否在 DOWN 事件中按下了圆内部。您将需要使用 Projection 将 x、y 转换为 LatLngLocation.distanceBetween 的组合。
  4. 如果用户没有在圆内按下,则返回 false,以便地图有机会处理事件
  5. 如果用户在圆内按下,则返回 true 并保存相关变量
  6. 在 MOVE 事件中,继续使用 Projection 根据初始和新的 x、y 计算新的中心点

-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方法以拖动您的圆形。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接