我正在尝试通过手指触摸调整 MkCircle 的大小。我该如何开始呢?有人可以建议我吗?
感谢提前。
我在地图视图上方绘制了具有相同半径的自定义圆圈,看起来像圆圈。
寻找MKcircle的边缘点
MKMapPoint centerMapPoint = MKMapPointForCoordinate(centerCoordinate)
计算圆的MKMapSize并得到宽度
双 circleMapSize = mkCircle.boundingMapRect.size.width
3.在圆的周长上创建一个点。
MKMapPoint leftMostPoint = MKMapPointMake(centerMapPoint.x - circleMapSize/2.0, centerMapPoint.y)
现在从 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 的半径更改为距离。
一种可能最简单的方法是自己在地图视图上方实际绘制圆圈,在响应触摸事件的单独透明视图上。MKCircle
然后,当绘制完成时,隐藏该视图,但使用相同的图形设置将实际添加到地图视图中。
通常,对于这样的事情,在地图视图之外处理绘图/手势会更容易。