减去两个MKCircle或如何在MapKit中的地图上绘制一个环?

时间:2012-04-02 08:53:26

标签: ios mkmapview mapkit mkoverlay

我正在尝试在MapKit中为地图添加一个环形叠加层。

我可以从另一个MKCircleView中减去一个MKCircleView,还是需要编写自己的自定义叠加层?

enter image description here

1 个答案:

答案 0 :(得分:2)

对于图片中的戒指类型,您无需创建自定义叠加层。

要绘制基本响铃,请添加一个MKCircle,并为其MKCircleView设置lineWidth,根据您想要的响铃厚度。

//Create the MKCircle (could be in viewDidLoad)...
MKCircle *c = [MKCircle circleWithCenterCoordinate:
                  CLLocationCoordinate2DMake(someLat, someLong) 
                  radius:2000];
[myMapView addOverlay:c];


//In viewForOverlay delegate method, return a MKCircleView...
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
    if ([overlay isKindOfClass:[MKCircle class]])
    {
        MKCircleView *cv = [[MKCircleView alloc] initWithCircle:overlay];
        cv.lineWidth = 15;  // <-- controls thickness of ring
        cv.strokeColor = [UIColor greenColor];
        cv.alpha = 0.75;
        return cv;
    }

    return nil;
}