[iPhone]在Google地图上的某个位置绘制圆圈

时间:2009-10-07 09:47:35

标签: ios mapkit mkoverlay

我是iPhone编程新手。我想使用CoreLocation和Mapkit API编写应用程序。 我已经能够找到并添加当前位置的引脚。现在,我试图围绕该位置绘制一个圆圈,但我不知道该怎么做。我很感激任何指点,谢谢。

2 个答案:

答案 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 以图形方式设置。