因为我想实现自定义调出在我的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中。 例如
我太所面临的同样的问题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。您应该根据自己的需求进行必要的修改。
只不过是你可以添加的NSString标题和副标题nstring这样的,_name为u想要的称号。
- (NSString *)title {
return _name;
}
- (NSString *)subtitle {
return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude];
}