百度地图自定义AnnotationView

先说问题:当AnnotationView使用自定义的view(类似如下代码),在放大缩小地图的过程中会偏移比较大的位置。


- (id)initWithAnnotation:(id)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);

目前官网还未给出这个说明,不过他表示会尽快更新。我在这里先给有同时遇到这个问题的小伙伴一个提示。

你可能感兴趣的:(百度地图自定义AnnotationView)