0

在我的 viewForAnnotation 方法中,我在图钉右侧添加了一个详细信息披露按钮,但是它将 showUserLocation 更改为红色图钉,在“当前位置”文本的右侧有一个披露按钮。

如何阻止当前位置符号成为图钉?没有方法就好了。

- (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;
}
4

2 回答 2

4

在方法的开头添加

 if (annotation == mapView.userLocation) {
    return nil;
}
于 2013-05-31T09:49:28.650 回答
0

这也包含在文档中:

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

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

于 2013-06-01T21:30:26.790 回答