Ios 如何为MapKit用户位置创建自定义详图索引视图?

Ios 如何为MapKit用户位置创建自定义详图索引视图?,ios,mkmapview,mapkit,mkannotationview,userlocation,Ios,Mkmapview,Mapkit,Mkannotationview,Userlocation,我已经为所有地图pin创建了自定义MKPinAnnotationView,但是自定义用户位置pin时遇到问题。如果我为它创建了一个自定义pin,那么我会丢失蓝色的脉动点,并用一个pin替换它,这是我不想要的。因此,我在viewForAnnotation方法中返回nil: - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { i

我已经为所有地图pin创建了自定义MKPinAnnotationView,但是自定义用户位置pin时遇到问题。如果我为它创建了一个自定义pin,那么我会丢失蓝色的脉动点,并用一个pin替换它,这是我不想要的。因此,我在viewForAnnotation方法中返回nil:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{   
    if(annotation == self.mapView.userLocation)
    {
        // show the blue dot for user's GPS location
        return nil;
    }

    ... code for custom annotation pins goes here
}

但问题是callout附件按钮在命中区域之外,我无法添加hitTest:withEvent,因为蓝点注释视图是私有的。。。有什么想法吗?

您可以在委托方法mapView:DidAddAnnotationView:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for(MKAnnotationView *view in views)
    {
        if (view.annotation == mapView.userLocation)
        {
            view.canShowCallout = YES;
            view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
            break;
        }
    }
}
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    for(MKAnnotationView *view in views)
    {
        if (view.annotation == mapView.userLocation)
        {
            view.canShowCallout = YES;
            view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
            break;
        }
    }
}