MKMapView

时间:2015-11-25 17:37:54

标签: ios cocoa-touch mkmapview mapkit

我正在使用MKMapView在两个坐标之间显示折线。 为了确保整个折线在地图视图中可见,我使用的是setVisibleMapRect(_:edgePadding:animated:)方法。

当我绘制的折线从北到南(或反之亦然)时,这种方法很好:

enter image description here

然而,在东西向(或反之亦然)渲染的折线中,并非所有折线都可见,并且用户必须缩小以使其完全可见:

enter image description here enter image description here

在此测试项目中,地图视图将添加到视图控制器并设置其约束,以便填充其整个超级视图。

我用来生成上面例子的代码如下:

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中都有展示。

1 个答案:

答案 0 :(得分:1)

尝试使用dispatch_async进行缩放

dispatch_async(dispatch_get_main_queue(), ^{
    [self zoomInOnRoute];
});