如何调整MKCircleView的大小?

时间:2013-09-17 10:18:38

标签: iphone ios mkmapview mapkit mkoverlay

我试图通过手指触摸来调整MkCircle的大小。我怎么开始呢?任何人都可以建议我吗?

感谢您提前。

2 个答案:

答案 0 :(得分:4)

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

寻找MKcirlce的边缘点

  1. 将中心点CLLocationCoordinate2D转换为MKMapPoint
  2. MKMapPoint centerMapPoint = MKMapPointForCoordinate(centerCoordinate)

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

      double circleMapSize = mkCircle.boundingMapRect.size.width

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

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

        获取CLLocationCoordinate2D点

        CLLocationCoordinate2D leftMostCoordinateOnCircle = MKCoordinateForMapPoint(leftMostPoint)

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

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

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

        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的中心点然后将MKCirlce的半径改为等于距离。

答案 1 :(得分:0)

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

通常,在地图视图外处理绘图/手势比较容易。