我使用以下代码将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的中心位置时都会调用这个方法,所以在每一步中都会出现黄色的气泡和整个动画。这很烦人。
是否可以在没有动画的情况下显示当前用户位置?
发布于 2013-04-05 04:33:47
简而言之:你不能--不需要一些努力:)
长答案:除非您伪造整个内容并返回真实位置的空白注释视图,然后使用位置管理器更新另一个自定义注释,否则您不能这样做。
步骤:
1-如果viewForAnnotation请求MKUserLocation的UIView,则返回一个空值,而不是nil!使用空的UIView。
nil会显示圆点。
对于该位置,现在从 viewForAnnotation 返回ANYTHIN但为nil将禁用追踪:这是地图工具包中的一个严重错误
2-因此您需要自己启动CLLocationManager,在MKMapView中添加一个自己的MKAnnotation以显示userLocation。
无论何时触发locationDidUpdate,您都可以像处理任何更新其坐标的MKAnnotation一样处理
发布于 2013-04-05 01:40:44
我不这样认为,并创建一个新的离线MKMapView与相同的地区,等等…但是,如果没有用户位置来拍摄快照,那么每次用户移动可见地图时,成本可能会太高。
https://stackoverflow.com/questions/15814646
复制相似问题