百度地图自定义AnnotationView

先说问题:当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);

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 10,634评论 3 23
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,575评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,734评论 6 30
  • 【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...
    SumerZZ100阅读 7,429评论 0 2
  • 不知觉中在围墙的空隙里透出了孤独悠悠天地虚拟梦幻散落一片又一片 于是展开眉头轮回在下一个路口至于不相干的目光云烟散...
    蒋光头jL94430阅读 3,919评论 8 25

友情链接更多精彩内容