我需要在地图上某个给定的位置画出一定半径的圆形,该圆形可以被拖动到其他位置。我可以像这样很好地画圆形:
mMap.addCircle(new CircleOptions().center(circleLocation).radius(10).strokeColor(Color.RED).fillColor(Color.RED));
现在,我需要将这个圆圈拖动到地图上,当我点击这个圆圈时,地图被锁定,当我移动手指时,这个圆圈应该在圆圈上移动而不是地图本身。
提前感谢!
我需要在地图上某个给定的位置画出一定半径的圆形,该圆形可以被拖动到其他位置。我可以像这样很好地画圆形:
mMap.addCircle(new CircleOptions().center(circleLocation).radius(10).strokeColor(Color.RED).fillColor(Color.RED));
我不知道如何处理形状,但一个替代方案是使用标记。它没有与地图相平齐的标记结果,因为标记是画在屏幕视图上的,但它确实有内置的拖动支持。您需要创建一个圆形图像。
map.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.draggable(true)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.circle)));
SupportMapFragment
上方添加一个 View
View
添加 OnTouchListener
Projection
将 x、y 转换为 LatLng
和 Location.distanceBetween
的组合。false
,以便地图有机会处理事件true
并保存相关变量Projection
根据初始和新的 x、y 计算新的中心点这里是绘制地图上方圆形的代码:
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方法以拖动您的圆形。