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];
});
我正在使用 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];
});