首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapSnapshotter如何设置引脚图像

MKMapSnapshotter如何设置引脚图像
EN

Stack Overflow用户
提问于 2015-11-17 18:53:18
回答 1查看 765关注 0票数 1

我创建引脚图像的代码如下:

代码语言:javascript
复制
 MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.region = MKCoordinateRegionMakeWithDistance(userLocation, 300, 300) ;
options.size = CGSizeMake(320,180);
options.scale = [UIScreen mainScreen].scale;

MKMapSnapshotter *snapShotter = [[MKMapSnapshotter alloc] initWithOptions:options];

[snapShotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    //
    if (error) {
        NSLog(@"err = %@",[error description]);
    }

    UIImage *img = snapshot.image;

    MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:nil];
    CGPoint coordinatePoint = [snapshot pointForCoordinate:userLocation];


    coordinatePoint.x += pin.centerOffset.x - (CGRectGetWidth(pin.bounds) / 2.0);
    coordinatePoint.y += pin.centerOffset.y - (CGRectGetHeight(pin.bounds) / 2.0);

    UIGraphicsBeginImageContextWithOptions(img.size, YES, img.scale);
    {
        [img drawAtPoint:CGPointZero];
        [pin.image drawAtPoint:coordinatePoint];
        _imgViewMapThubbnail.image = UIGraphicsGetImageFromCurrentImageContext();
    }
    UIGraphicsEndImageContext();
    _imgViewMapThubbnail.layer.cornerRadius = 10 ;
    _imgViewMapThubbnail.layer.masksToBounds = true ;

}];

这个代码是正常的红色引脚,位置几乎正确。我想要我的自定义pin,所以我添加了如下代码

代码语言:javascript
复制
pin.image = [UIImage imageNamed:@"MY_IMAGE_NAME"];

引脚图像已更改,并且工作正常。然而,我的位置有一些不同。我不知道,如何调整我的代码或引脚图像大小,以设置到正确的位置?

EN

回答 1

Stack Overflow用户

发布于 2016-09-26 11:33:04

考虑到这是一个老问题,对于任何来这里定制引脚图像的人来说,这里有一个来自上面示例的修订代码,它可以将引脚渲染到正确的位置。

代码语言:javascript
复制
CGPoint coordinatePoint = [snapshot pointForCoordinate:newCenter];
    UIImage *pin = [UIImage imageNamed:@"pin"];
    CGPoint centerOffset = CGPointMake(0, -pin.size.height / 2);
    coordinatePoint.x += centerOffset.x - (pin.size.width / 2.0);
    coordinatePoint.y += centerOffset.y - (pin.size.height / 2.0);

    UIGraphicsBeginImageContextWithOptions(img.size, YES, img.scale);
    {
        [img drawAtPoint:CGPointZero];
        [pin drawAtPoint:coordinatePoint];
        _imgViewMapThubbnail.image = UIGraphicsGetImageFromCurrentImageContext();
    }
    UIGraphicsEndImageContext();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33755097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档