Mac*_*tle 9 mkmapview mkmapviewdelegate swift ios10
我试图渲染MKMapView成一个UIImage,而不是在屏幕上显示它.我初始化地图:
let mapView = MKMapView(frame: CGRect(x: 0, y: 0, width: 1000, height: 1000))
mapView.delegate = self
let region = MKCoordinateRegionMakeWithDistance(location.coordinate(), 1000, 1000)
mapView.setRegion(region, animated: false)
Run Code Online (Sandbox Code Playgroud)
我也实现了MKMapKitDelegate这个方法mapViewDidFinishLoadingMap().除非我将地图添加到视图层次结构并使其可见,否则永远不会调用此方法.这意味着,其设置alpha为0,或isHidden到true不工作(在地图中没有加载在这种情况下).救命?
好的,这是我自己的解决方案。
实施该MKMapViewDelegate方法mapViewDidFinishRenderingMap(_ mapView:, fullyRendered:)。请务必使用此方法而不是mapViewDidFinishLoadingMap(_ mapView:)!
这是古怪的部分。将地图视图添加到现有的可见视图(我使用视图控制器自己的视图),并将其放置在屏幕外,仅显示一个像素。这很重要,因为如果地图没有可见像素,它将不会渲染。例如:
let width = 1000
let height = 1000
let mapView = MKMapView(frame: CGRect(x: -width+1, y: -height+1, width: width, height: height))
view.addSubview(mapView)
Run Code Online (Sandbox Code Playgroud)没有步骤 3。如果正确配置地图,(1) 中提到的委托方法将被调用,此时您将获得完全渲染的地图。
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |