用MKPinAnnotationView改变信息泡沫?

时间:2015-07-26 22:10:16

标签: ios swift mapkit mkannotation mkannotationview

我想使用普通的MKPinAnnotationView,但我想为标注使用自定义视图。我能找到的每个解决方案似乎都是黑客攻击或者没有维持正常的丢弃引脚行为

有人能提供一个替换MKPinAnnotationView标注的最简单方法的例子吗?

1 个答案:

答案 0 :(得分:1)

您必须覆盖

-(MKAnnotationView*) mapView:(MKMapView *)mkMapView viewForAnnotation:(id<MKAnnotation>)annotation

函数,返回自定义MKAnnotationView。在此视图(您创建)中,您可以使用drawRect函数自定义布局。

这就是我的自定义气泡:

Custom callout

这是我的viewForAnnotation:

-(MKAnnotationView*) mapView:(MKMapView *)mkMapView viewForAnnotation:(id<MKAnnotation>)annotation
{
   if ([annotation isKindOfClass:[YourAnnotation class]]) {
      YourAnnotationView *yourAnnotationView = (YourAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"YourAnnotation"];

      if(!yourAnnotationView)
      {
         yourAnnotationView = [[YourAnnotationView alloc]
                               initWithAnnotation:annotation reuseIdentifier:@"YourAnnotation"];
      }
      [yourAnnotationView setTitle:annotation.title];
      [yourAnnotationView setSubtitle:annotation.subtitle];

      yourAnnotationView.draggable = YES;

      return yourAnnotationView;
   }
   else
   {
      MKPinAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
                                                                            reuseIdentifier:@"GPXAnnotation"];
      annotationView.canShowCallout = NO;
      annotationView.pinColor = MKPinAnnotationColorGreen;

      annotationView.draggable = YES;
      return annotationView;
   }
   return nil;
}

希望它可以帮助你朝着正确的方向前进!