我需要一个简单的MKCircle叠加实现

时间:2011-08-26 03:47:39

标签: iphone ios mkmapview mkannotation mkoverlay

我的视图中有一张小地图,我想将MKCircle叠加层放到上面。我有所有的坐标和半径,因为我正在创建监控区域。我想将这个区域显示给用户,以便他们知道边界是什么。

对于我的生活,互联网上没有一个很好的教程可以给我一些简单的必需品,可以将圆圈放到我的地图上并完成。

作为一个先驱......我使用Apple的例子没有运气。区域示例应该是唯一需要的,但我可以做的就是放下引脚,没有圆圈。我甚至将他们的课程直接复制到我的项目中......没有快乐。因此,如果你能指出一个很好的例子或布局确切需要在一个简单的ViewController中实现什么,我将非常感激。

2 个答案:

答案 0 :(得分:15)

我猜测为什么使用示例代码不起作用:您没有将视图控制器连接为地图视图的委托。这样做的第一步是确保控制器实现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];
}

答案 1 :(得分:4)

这是

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <
MKOverlay>)overlay

对于完整的委托方法,请参阅a complete answer,了解与我一样完全迷失的人。