先说问题:当AnnotationView使用自定义的view(类似如下代码),在放大缩小地图的过程中会偏移比较大的位置。
- (id)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) {
[self customView];
}
return self;
}
- (UIView *)customView{
if (_customView == nil) {
_customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(44, 0, 12, 26)];
imageView.image = [UIImage imageNamed:@"arrow_for_wind"];
[_customView addSubview:imageView];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 30, 100, 20)];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor blackColor];
label.font = [UIFont systemFontOfSize:10];
label.backgroundColor = [UIColor clearColor];
label.text = [NSString stringWithFormat:@"%@km/h",self.annotation.title];
[_customView addSubview:label];
[self addSubview:_customView];
}
return _customView;
}
@end
偏差如下图:
放大地图时.jpg
缩小地图时.jpg
同一个大头针放大缩小后竟然差距这么大(陆地去到海上),后来提交工单给百度,得到的回复如下:
自定义image的话,内部会自动获取图片中心点显示在经纬度所在位置,自定义view的话需要设置一下bounds。本例中是self.bounds = CGRectMake(0, 30, 100, 20);
目前官网还未给出这个说明,不过他表示会尽快更新。我在这里先给有同时遇到这个问题的小伙伴一个提示。
网友评论