2012-09-12 93 views
0

我正在处理地图应用程序。我完成了在特定条件下获取位置的信息,在地图视图上显示注释并显示我的自定义标注泡泡。在MKMapView上显示自定义注释视图

我的要求是,以显示注解引脚如下:

  • 与圆角A图像显示注释
  • 在注释的右上角会出现一个红色的徽章一种视角。
  • 需要访问红色徽章视图并以某些方法设置文本。

现在我知道我可以设置图片的注释视图,并使其圆角如下:

pinView.image = [UIImage imageNamed:@"annotationImage"]; 
[pinView.layer setCornerRadius:8.0]; 
[pinView setClipsToBounds:YES]; 

这里pinView是AnnotationView。

请让我知道,如果我可以创建一个自定义视图并将其分配到引脚视图,以便我可以获得红色徽章并设置图像。

UPDATE

我尝试很多东西,得到更多成功把视图。但问题是如果我在地图上使用MKAnnotationView对象,我无法点击它或调用手势识别器。如果我使用MKPinAnnotationView比我能够调用didSelected方法或添加一个手势识别器,但我无法设置它的图像,因为它是一个引脚注释。 Plz让我知道这是否可能。

在此先感谢。

+0

它适合你吗? –

+0

是的它是在Imageview中设置图像,并使其圆角。我想添加标签等。总之需要一个完全自定义的视图 –

+0

我试图实现与发布时相同的事情。你能使它起作用吗?你可以分享你是如何获得徽章以显示在顶部的,以及如何点击称为didSelected方法的图像?谢谢 – Pankaj

回答

3

你需要设置你的等级为MKMapViewDelegate,并填写此方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
CustomMapAnnotationView *annotationView = nil; 

pinView.image = [UIImage imageNamed:@"annotationImage"]; 
[pinView.layer setCornerRadius:8.0]; 
[pinView setClipsToBounds:YES]; 

NSString* identifier = @"CustomMapAnnotation"; 
CustomMapAnnotationView *newAnnotationView = (CustomMapAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 

if(nil == newAnnotationView) { 
    newAnnotationView = [[[CustomMapAnnotationView alloc] initWithAnnotation: pinView reuseIdentifier:identifier] autorelease]; 
} 

annotationView = newAnnotationView; 
[annotationView setEnabled:YES]; 
[annotationView setCanShowCallout:YES]; 

return annotationView; 
} 

因此,你可以返回一个自定义类的子类MKAnnotationView,你现在可以添加徽章自定义视图。

+0

谢谢你的回应,但你可以plz帮助我执行自定义注释,比如什么是它的强制方法,以及在哪种方法中,我可以添加像Imageview,Label或Button等自定义视图。 –

+0

我试过创建一个自定义注释视图,但它不允许我点击它。我需要设置允许选择的任何属性吗? –

+0

您是否将setCanShowCallout属性添加为YES? –

相关问题