4

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

对于我的生活,互联网上没有一个好的教程可以让我只需要在我的地图上画一个圆圈并完成。

作为先驱......我没有运气使用Apple的例子。Regions 示例应该是需要的,但我所能做的就是放下图钉,没有圆圈。我什至将他们的课程直接复制到我的项目中……不高兴。因此,如果您能指出一个很好的示例或准确地布局需要在一个简单的 ViewController 中实现的内容,我将非常感激。

4

2 回答 2

14

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

它是

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

对于完整的委托方法,请参阅像我这样完全迷失的人的完整答案

于 2011-10-22T16:58:44.303 回答