我正在使用MapKit,我遇到了确切的问题。
这是我的代码:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *identifier = @"MyLocation";
if ([annotation isKindOfClass:[MyLocation class]]) {
MKAnnotationView *annotationView = (MKAnnotationView *) [mymap_ios dequeueReusableAnnotationViewWithIdentifier:identifier];
if (annotationView == nil) {
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
} else {
annotationView.annotation = annotation;
}
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return annotationView;
}
return nil;
}
在这段代码中,我可以看到它旁边的引脚而不是蓝色按钮。似乎我忘记了这样做:
mymap_ios.delegate=self;
但是当我添加它时,标记根本不显示。
你可以帮我吗?
答案 0 :(得分:2)
如果您未设置地图视图的delegate
,则不会调用viewForAnnotation
并创建默认的红色图钉,而不会显示任何附件按钮。
当您设置delegate
时,它会调用您的viewForAnnotation
方法,但您创建了一个普通的MKAnnotationView
,默认情况下没有任何预先设置的图片或视图(它是空白的) )强>
设置注释视图的image
,向视图添加一些内容,或者只创建MKPinAnnotationView
而不是MKAnnotationView
:
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [mymap_ios ...
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] init...
还要确保您添加的注释对象的类型为MyLocation
,否则它们将显示为没有附件按钮的纯红色引脚。