0

我正在开发地图应用程序。我已完成在特定条件下获取位置、在地图视图上显示注释并显示我的自定义标注气泡。

我的要求是显示注释引脚如下:

  • 带有圆角的图像以显示注释
  • 在注释的右上角会有一个红色徽章类型的视图。
  • 需要访问该红色徽章视图并以某些方法设置文本。

现在我知道我可以将 Image 设置为注释视图并使其圆角如下:

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

pinView是一个注释视图。

请让我知道我是否可以创建自定义视图并将其分配给固定视图,以便我可以获得红色徽章并设置图像。

更新

我尝试了更多的东西并成功放置了视图。但问题是,如果我MKAnnotationView在地图上使用一个对象,我将无法点击它或在其上调用手势识别器。如果我使用MKPinAnnotationView,我可以调用 didSelected 方法或添加手势识别器,但我无法在其上设置图像,因为它是 Pin Annotation。请让我知道这是否可能。

提前致谢。

4

1 回答 1

3

您需要将您的 Class 设置为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,并且您现在可以将徽章添加到您的自定义视图中。

于 2012-09-12T05:43:27.623 回答