0

我正在尝试通过手指触摸调整 MkCircle 的大小。我该如何开始呢?有人可以建议我吗?

感谢提前。

4

2 回答 2

4

我在地图视图上方绘制了具有相同半径的自定义圆圈,看起来像圆圈。

寻找MKcircle的边缘点

  1. 将中心点 CLLocationCoordinate2D 转换为 MKMapPoint

MKMapPoint centerMapPoint = MKMapPointForCoordinate(centerCoordinate)

  1. 计算圆的MKMapSize并得到宽度

    双 circleMapSize = mkCircle.boundingMapRect.size.width

3.在圆的周长上创建一个点。

MKMapPoint leftMostPoint = MKMapPointMake(centerMapPoint.x - circleMapSize/2.0, centerMapPoint.y)
  1. 现在从 leftMostPoint 获取 CLLocationCoordinate2D 点

    CLLocationCoordinate2D leftMostCoordinateOnCircle = MKCoordinateForMapPoint(leftMostPoint)

所以现在我有中心点和边缘点,然后将其转换为 ios 坐标的 (x,y)。

CGPoint myPoint = [self.MapView convertCoordinate:originalCoordinate toPointToView:self.MapView];

CGPoint edgePoint = [self.MapView convertCoordinate:originalCoordinate toPointToView:self.MapView];

然后我使用毕达哥拉斯定理计算这两个点的距离

int distnce1=sqrt(powf(edgePoint.x- myPoint.x, 2) + powf(edgePoint.y-myPoint.y, 2));

            int finalWidth=2*distnce1;

然后我将距离设置为自定义圆的宽度和高度

在pich手势再次结束后,我尝试通过使用圆数学来获取自定义圆的边缘纬度和经度

float x = circleView.frame.size.width/2 * sin(0)+circleView.center.x;
        float y = circleView.frame.size.width/2 * cos(0)+circleView.center.y;

将 x,y 转换为坐标

CLLocationCoordinate2D select_coordinate = [self.MapView convertPoint:point toCoordinateFromView:self.view];

然后我找到距离 b/w 新坐标和 MKCircle 的中心点,然后将 MKCircle 的半径更改为距离。

于 2013-09-18T12:04:51.523 回答
0

一种可能最简单的方法是自己在地图视图上方实际绘制圆圈,在响应触摸事件的单独透明视图上。MKCircle然后,当绘制完成时,隐藏该视图,但使用相同的图形设置将实际添加到地图视图中。

通常,对于这样的事情,在地图视图之外处理绘图/手势会更容易。

于 2013-09-17T17:45:45.560 回答