我试图通过手指触摸来调整MkCircle的大小。我怎么开始呢?任何人都可以建议我吗?
感谢您提前。
答案 0 :(得分:4)
我在地图视图上方绘制自定义圆圈,半径相同,看起来像圆圈。
寻找MKcirlce的边缘点
MKMapPoint centerMapPoint = MKMapPointForCoordinate(centerCoordinate)
计算圆的MKMapSize并获得宽度
double 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];
然后我用毕达哥拉斯定理计算这两个点的距离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
添加到地图视图。
通常,在地图视图外处理绘图/手势比较容易。