viewForAnnotation详细信息披露改变当前位置以及引脚

时间:2013-05-31 09:42:12

标签: ios objective-c cocoa-touch mapkit

在我的viewForAnnotation方法中,我在引脚的右侧添加了一个详细信息公开按钮,但是它将showsUserLocation更改为一个红色引脚,并在“当前位置”文本的右侧显示了一个公开按钮。

如何阻止当前位置符号成为引脚?没有这种方法就可以了。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    static NSString *identifier = @"MyLocation";

        MKPinAnnotationView *annotationView =
        (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

        if (annotationView == nil) {
            annotationView = [[MKPinAnnotationView alloc]
                              initWithAnnotation:annotation
                              reuseIdentifier:identifier];
        } else {
            annotationView.annotation = annotation;
        }

        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;

        // Create a UIButton object to add on the
        UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [rightButton setTitle:annotation.title forState:UIControlStateHighlighted];
        [annotationView setRightCalloutAccessoryView:rightButton];

    return annotationView;
}

2 个答案:

答案 0 :(得分:4)

在方法的开头添加

 if (annotation == mapView.userLocation) {
    return nil;
}

答案 1 :(得分:0)

这也包含在文档中:

  

如果annotation参数中的对象是MKUserLocation类的实例,则可以提供自定义视图来表示用户的位置。要使用默认系统视图显示用户的位置,请返回nil。

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html#//apple_ref/occ/intf/MKMapViewDelegate