MKMapView 中水平折线的缩放级别不正确

Incorrect zoom level for horizontal polyline in a MKMapView

我正在使用 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.

中均有体现

尝试使用 dispatch_async

进行缩放
dispatch_async(dispatch_get_main_queue(), ^{
    [self zoomInOnRoute];
});