我正在使用MKMapView
在两个坐标之间显示折线。
为了确保整个折线在地图视图中可见,我使用的是setVisibleMapRect(_:edgePadding:animated:)
方法。
当我绘制的折线从北到南(或反之亦然)时,这种方法很好:
然而,在东西向(或反之亦然)渲染的折线中,并非所有折线都可见,并且用户必须缩小以使其完全可见:
在此测试项目中,地图视图将添加到视图控制器并设置其约束,以便填充其整个超级视图。
我用来生成上面例子的代码如下:
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
var verticalLine = [CLLocationCoordinate2DMake(40.711043, -74.008243), CLLocationCoordinate2DMake(40.988465, -73.807804)]
var horizontalLine = [CLLocationCoordinate2DMake(40.798569, -74.269200), CLLocationCoordinate2DMake(40.804152, -73.771390)]
let polyline = MKPolyline(coordinates: &horizontalLine, count: 2)
mapView.addOverlay(polyline, level: .AboveRoads)
mapView.setVisibleMapRect(polyline.boundingMapRect, edgePadding: UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0), animated: false)
}
如果渲染垂直或水平折线,如何确保整条线条可见?上述行为在iOS 8.2和iOS 9.1中都有展示。
答案 0 :(得分:1)
尝试使用dispatch_async进行缩放
dispatch_async(dispatch_get_main_queue(), ^{
[self zoomInOnRoute];
});