Я думаю, почему использование примера кода не сработало: вы не подключили свой контроллер представления в качестве делегата представления карты. Первый шаг для этого - убедиться, что контроллер реализует протокол MKMapViewDelegate, например так (в заголовочном файле):
#import <MapKit/MapKit.h>
@interface MyViewController : UIViewController <MKMapViewDelegate>
Если вы настраиваете контроллер вида из XIB, перетащите Ctrl с вида карты на экземпляр контроллера и подключите его в качестве выхода delegate
вида карты. Если вы настраиваете это в коде, то наберите theMapView.delegate = self;
в вашем -loadView
или -viewDidLoad
.
Затем, в какой-то момент (например, в вашем -viewDidLoad
),
[theMapView addOverlay:[MKCircle circleWithCenterCoordinate:someCoordinate radius:someRadius]];
… приведет к тому, что представление карты вызовет метод его делегата -mapView:viewForOverlay:
, который можно реализовать примерно так:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:(MKCircle *)overlay];
circleView.fillColor = [UIColor blueColor];
return [circleView autorelease];
}