我的视图中有一张小地图,我想将MKCircle叠加层放到上面。我有所有的坐标和半径,因为我正在创建监控区域。我想将这个区域显示给用户,以便他们知道边界是什么。
对于我的生活,互联网上没有一个很好的教程可以给我一些简单的必需品,可以将圆圈放到我的地图上并完成。
作为一个先驱......我使用Apple的例子没有运气。区域示例应该是唯一需要的,但我可以做的就是放下引脚,没有圆圈。我甚至将他们的课程直接复制到我的项目中......没有快乐。因此,如果你能指出一个很好的例子或布局确切需要在一个简单的ViewController中实现什么,我将非常感激。
答案 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,了解与我一样完全迷失的人。