使用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模型做些什么?
答案 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的结果区域在垂直和水平距离上都是正确的(与谷歌地图的网络距离测量工具相比)