Ios 如何在MapView中显示没有动画的用户位置

Ios 如何在MapView中显示没有动画的用户位置,ios,objective-c,mkmapview,Ios,Objective C,Mkmapview,我使用以下代码将MKMapView转换为UIImage: +(UIImage *)imageFromMapView:(MKMapView *)mapView { BOOL showsUserLocation = mapView.showsUserLocation; //save flag [mapView setShowsUserLocation:NO]; //hide blue bubble for taking picture CGRect frame = map

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

+(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中心位置时,我都会调用此方法,所以在每一步中都会出现黄色气泡和整个动画。真烦人


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

我不这样认为,并使用相同的区域创建一个新的脱机
MKMapView
,等等。。。但是,如果没有用户位置以便在每次用户移动可见地图时拍摄快照,成本可能会太高。

简短回答:你不能——不费吹灰之力就不行:)

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

步骤: 1-如果
viewForAnnotation
MKUserLocation
请求一个
UIView
,请返回一个空视图,但不能为零!使用空UIView。
nil将显示点

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

2-因此您需要自己启动
CLLocationManager
,在
MKMapView
中添加自己的
MKAnnotation
,以显示用户位置。

您可以像任何MKAnnotation一样,在触发
locationDidUpdate
时更新其坐标

不要每次渲染贴图