将MapView委托设置为self时,showUserLocation会更改

时间:2012-04-29 19:40:32

标签: objective-c ios mapkit core-location

我是CoreLocation和MapKit的新手,我有这个奇怪的问题。基本上,我在UIView中显示了一个MKMapView。当我设置我的MKMapView时:

self.mapView.showsUserLocation = YES;
//self.mapView.delegate = self;

我得到了这个(1):

enter image description here

但是当我取消注释第二行时,我得到了这个(2),我觉得很奇怪。

enter image description here

我怎样才能将MKMapView的委托设置为self,但仍然得到(1)

由于

1 个答案:

答案 0 :(得分:3)

您是否在覆盖控制器中的注释(viewForAnnotation方法)?在我看来,当您将委托设置为self时,注释将被覆盖。

如果您确实更改了班级中的注释,请添加以下行。这将阻止更改“当前位置”点的注释。

- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString *AnnotationViewID = @"annotationViewID";

    // Check if its the annotation for displaying the current position
    if ([annotation isKindOfClass:[MKUserLocation class]])
    {
        return nil;
    }

    // Your annotation code

}