Я знаю, что изначально это был тег iOS SDK 3.0 , но я предполагаю, что это было потому, что в то время это был текущий SDK. Если кто-то ищет ответ на этот вопрос, но может использовать iOS 4.0+, то вот мое решение.
Итак, я предполагаю, что у вас есть UIViewController
, которому принадлежит MKMapView
.
@interface MapViewController : UIViewController<MKMapViewDelegate> {
@private
MKMapView* mapView;
}
@property (nonatomic, retain) IBOutlet MKMapView* mapView;
@end
и вы настраиваете свои соединения в Interface Builder (XCode сейчас) для подключения фактического MKMapView
к mapView
розетке. И тогда у вас есть переменная, которая содержит местоположение, вокруг которого вы хотите нарисовать круг: location
. Вам просто нужно создать MKCircle
и добавить его к вашему mapView
как оверлей :
CLLocationCoordinate2D location = [self getTheLocationSomehow];
CLLocationDistance radius = 50.0; // in meters
MKCircle* circle = [MKCircle circleWithCenterCoordinate: location radius: radius];
[mapView addOverlay:circle];
Если вы хотите настроить внешний вид вашего круга, ваш контроллер вида может реализовать MKMapViewDelegate
и реализовать mapView:viewForOverlay:
следующим образом:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
MKCircle* circle = overlay;
MKCircleView* circleView = [[[MKCircleView alloc] initWithCircle: circle] autorelease];
// make the circle red with some transparency and stroke
circleView.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.25];
circleView.strokeColor = [UIColor redColor];
circleView.lineWidth = 2.0;
return circleView;
}
Не забудьте установить mapView.delegate = self
в коде контроллера представления (например, viewDidLoad
) или графически через Interface Builder .