首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MapView中不带动画的showUserLocation

如何在MapView中不带动画的showUserLocation
EN

Stack Overflow用户
提问于 2013-04-04 22:51:52
回答 2查看 136关注 0票数 0

我使用以下代码将MKMapView转换为UIImage:

代码语言:javascript
复制
+(UIImage *)imageFromMapView:(MKMapView *)mapView {

    BOOL showsUserLocation = mapView.showsUserLocation; //save flag
    [mapView setShowsUserLocation:NO]; //hide blue bubble for taking picture

    CGRect frame = mapView.frame;
    if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
        ([UIScreen mainScreen].scale == 2.0)) {
        frame.size.width *= 2;
        frame.size.height *= 2;
    }
    //    UIGraphicsBeginImageContext(frame.size);
    UIGraphicsBeginImageContextWithOptions((frame.size), YES, 0.0);
    [mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *mapImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    DLog(@"got mapImage size:%@",NSStringFromCGSize(mapImage.size));

    [mapView setShowsUserLocation:showsUserLocation];//restore flag
    return mapImage;
}

我每次移动MapView的中心位置时都会调用这个方法,所以在每一步中都会出现黄色的气泡和整个动画。这很烦人。

是否可以在没有动画的情况下显示当前用户位置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-05 04:33:47

简而言之:你不能--不需要一些努力:)

长答案:除非您伪造整个内容并返回真实位置的空白注释视图,然后使用位置管理器更新另一个自定义注释,否则您不能这样做。

步骤:

1-如果viewForAnnotation请求MKUserLocationUIView,则返回一个空值,而不是nil!使用空的UIView。

nil会显示圆点。

对于该位置,现在从 viewForAnnotation 返回ANYTHIN但为nil将禁用追踪:这是地图工具包中的一个严重错误

2-因此您需要自己启动CLLocationManager,在MKMapView中添加一个自己的MKAnnotation以显示userLocation。

无论何时触发locationDidUpdate,您都可以像处理任何更新其坐标的MKAnnotation一样处理

票数 0
EN

Stack Overflow用户

发布于 2013-04-05 01:40:44

我不这样认为,并创建一个新的离线MKMapView与相同的地区,等等…但是,如果没有用户位置来拍摄快照,那么每次用户移动可见地图时,成本可能会太高。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15814646

复制
相关文章

相似问题

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