iOS Mapkit自定义标注
这是一个示例自定义详图索引,我希望获得类似的样式。我曾考虑从MKAnnotation继承,但我不知道如何启动它,我不知道调用的设计是否可以被覆盖 你知道如何使用内部的ui控件实现这个自定义标注吗 编辑:以下是我的代码,来自类似的StackOverflow答案:iOS Mapkit自定义标注,ios,mapkit,Ios,Mapkit,这是一个示例自定义详图索引,我希望获得类似的样式。我曾考虑从MKAnnotation继承,但我不知道如何启动它,我不知道调用的设计是否可以被覆盖 你知道如何使用内部的ui控件实现这个自定义标注吗 编辑:以下是我的代码,来自类似的StackOverflow答案: - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation { if ([an
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if(annotationView)
return annotationView;
else
{
UIImage *img = [UIImage imageNamed:@"default_thumb.png"];
MKAnnotationView *annotationView =
[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
annotationView.canShowCallout = YES;
annotationView.image = img;
annotationView.draggable = YES;
/*
// change left accessory view button with image
UIImageView *leftAccView = [[UIImageView alloc] initWithImage:img];
annotationView.leftCalloutAccessoryView = leftAccView;
//include a right button to show more info
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(calloutSubMenu:) forControlEvents:UIControlEventTouchUpInside];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
annotationView.rightCalloutAccessoryView = rightButton;
*/
return annotationView;
}
return nil;
}
// Customize accessory view
- (void)mapView:(MKMapView *)mapview annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
[mapview deselectAnnotation:view.annotation animated:YES];
PopOverCallout *popOverCallout = [[PopOverCallout alloc]init];
UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:popOverCallout];
self.annotationPopoverController = popOver;
popOver.popoverContentSize = CGSizeMake(500, 500);
[popOver presentPopoverFromRect:view.bounds inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
应在触按pin时调用以正确显示标注?但会出现一个空白的常规标注。我可能做错了什么
顺便说一句:UIViewController子类的XIB上只有一个标签,而且几乎是空白的。在小睡几分钟后找到了答案 作为向导,我只需要覆盖
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
其中显示注释详图索引。再次感谢您的回答,安娜女士。请参阅。谢谢。我想这是一份精确的副本。如果另一篇文章的答案是我想要的,我可能会删除这个问题。@Anna Karenina-你能告诉我为什么它仍然显示一个常规的标注吗?我在viewForAnnotation中添加了代码Yes,将canShowCallout设置为NO,并实现didSelectAnnotationView而不是CalloutAccessoryControl,如您的答案所示。
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view