7

因为我想在 mkmapview 中实现自定义调用,所以我正在使用这些类 CalloutMapAnnotationView.h 和 CalloutMapAnnotationView.m

我从以下链接中提取了这些类

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.h

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.m

这些在 ios5 中工作正常,但在 ios6 中,当我单击调用时,地图视图正在移动,并且调用未正确显示,如下图所示,当我缩放时,它也没有正确出现我尝试了几种方法来获取通过检查操作系统的版本来摆脱这个问题,并尝试更改类中的一些方法但不使用。

在 ios5 地图视图中实现这些之后,就像这样 在此处输入图像描述

在 iOS6 中,这一项不像在 ios5 中那样正常。例如 在此处输入图像描述

4

2 回答 2

5

iOS 6我在使用这些类时也遇到了同样的问题。这些更改对我有用:

1)这种方法的改变:

您将在地图视图类中实现此方法

(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view

按照以下行的顺序

self.selectedAnnotationView = view;

[self.mapView addAnnotation:self.calloutAnnotation];

2) 在 CalloutMapAnnotationView.m 文件中

- (void)adjustMapRegionIfNeeded in this method first 5 lines like bellow

    CGFloat xPixelShift = 0;

   if ([self relativeParentXPosition] < 38) {

        xPixelShift = 38 - [self relativeParentXPosition];

   } else if ([self relativeParentXPosition] > self.frame.size.width - 38) {

  xPixelShift = (self.frame.size.width - 38) - [self relativeParentXPosition];

   }

3) 在同一个类 CalloutMapAnnotationView.m - (void)drawRect:(CGRect)rect在这个方法之后CGFloat parentX = [self relativeParentXPosition];

行并在rect = self.bounds;此行上方添加以下行

    if ([self relativeParentXPosition] < 38) {

       parentX = 38;

   } else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) {

       parentX = [self relativeParentXPosition]-25;

   }

4) 在同一类 CalloutMapAnnotationView.m 中。

- (void)didMoveToSuperview {
        [super didMoveToSuperview];
        [self.superview bringSubviewToFront:self];
    }

您可以直接使用上述类并使用它们在 iOS 5 和 iOS 6 中都可以正常工作。您应该根据您的要求进行必要的更改。

于 2012-12-05T05:01:48.497 回答
-2

只是你可以像这样添加 nsstring 标题和 nstring 副标题,而 _name 就是你想要的标题。

- (NSString *)title {
    return _name;
}
- (NSString *)subtitle {
    return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude];
}
于 2013-02-15T08:04:26.423 回答