我有一个配置的MKMapView:
static let STARTING_MAP_RANGE: Double = 1000 // meters
. . .
let region: MKCoordinateRegion = MKCoordinateRegionMakeWithDistance(location,
MapViewController.STARTING_MAP_RANGE,
MapViewController.STARTING_MAP_RANGE)
mapView.setRegion(region, animated: true)
我为当前位置添加了一个注释,一切看起来都很好。当我为可见区域中的其他点添加注释时,MKMapView会放大显示所有注释所需的最小区域。
奇怪的是,我试图通过打印左下角和右上角经度和经度来找出这种情况:
private func printMapRegion(caller: String)
{
let mapRect = mapView.visibleMapRect;
let bottomLeft = MKCoordinateForMapPoint(MKMapPointMake(mapRect.origin.x, MKMapRectGetMaxY(mapRect)))
let topRight = MKCoordinateForMapPoint(MKMapPointMake(MKMapRectGetMaxX(mapRect), mapRect.origin.y))
print("\(caller): (\(bottomLeft.latitude),\(bottomLeft.longitude)) -- (\(topRight.latitude),\(topRight.longitude))")
}
当我在设置注释之前和之后运行它时,我得到相同的值,尽管在屏幕上看到地图缩放(在模拟器和我的iPhone中)。
我添加了一个刷新按钮来重置地图。它可以直接缩放地图,但它也会报告缩放前后的左下角和右上角坐标。
我对visibleMapRect的理解是否有问题?
答案 0 :(得分:0)
我发现缩放的原因是我正在添加这样的注释:
mapView.removeAnnotations(mapView.annotations)
mapView.addAnnotations(annotations)
mapView.showAnnotations(mapView.annotations, animated: true)
删除对showAnnotations的调用消除了这个问题。我仍然很好奇为什么visibleMapRect在可见缩放后报告相同的边界坐标。