MKCoordinateRegionMakeWithDistance在iphoneX上给出了错误的结果

时间:2018-05-25 01:36:47

标签: swift mapkit iphone-x

使用MKCoordinateRegionMakeWithDistance设置MKMapView的区域时,生成的区域总是会产生错误的结果,其大小总是略大于我对其他手机型号的最佳匹配。

例如,做:

let region         = MKCoordinateRegionMakeWithDistance(someLocation, 400, 200)
let adjustedRegion = mapView.regionThatFits(region)
mapView.setRegion(adjustedRegion, animated: true)

(mapview的垂直和水平比率定义为2:1)

总会产生一个垂直420米,水平210米的视图,而其他手机型号则不会这样。

可以理解的是,它的目的是找到指定尺寸的“最佳贴合”区域,关于我的是,iPhone X上的结果有所不同。 (在型号8,8 +,5s上)

我是否需要专门为带有mapViews的iPhone X模型做些什么?

1 个答案:

答案 0 :(得分:1)

事实证明,mapkit的mapCo的MKCoordinateRegionMakeWithDistance在没有安全区域插入的情况下进行计算。

由于我的mapView设置在屏幕的底部,因此在应用垂直距离时,需要进行一些缩减以弥补这种奇怪的行为。

let verticalDistance = 400 * ((mapView.bounds.height - mapView.safeAreaInsets.bottom) / mapView.bounds.height )
let region         = MKCoordinateRegionMakeWithDistance(someLocation, verticalDistance, 200)
let adjustedRegion = mapView.regionThatFits(region)
mapView.setRegion(adjustedRegion, animated: true)

这使得mapView的结果区域在垂直和水平距离上都是正确的(与谷歌地图的网络距离测量工具相比)