我是iPhone编程新手。我想使用CoreLocation和Mapkit API编写应用程序。 我已经能够找到并添加当前位置的引脚。现在,我试图围绕该位置绘制一个圆圈,但我不知道该怎么做。我很感激任何指点,谢谢。
答案 0 :(得分:1)
我以为我和你有同样的问题。我发现这个问题的答案,对我帮助很大,我希望这会对你有所帮助。 Drawing a Point, Line, Polygon on top of MKMapview
答案 1 :(得分:0)
我知道这最初被标记为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 以图形方式设置。