MKMapView - 如何计算半径符合设置
问题描述:
我在MKMapView上画一个圆。但是,如何计算此圆的半径,使其等于用于首先绘制圆的半径的值?MKMapView - 如何计算半径符合设置
func setArea(_ center:CLLocationCoordinate2D, radius:CLLocationDistance) {
let area = MKCircle(center:center, radius:radius/LocationViewController.kRadiusInset)
mapView.setVisibleMapRect(mapView.mapRectThatFits(area.boundingMapRect), animated:false)
}
我试过以下,但它很略高于radius
传递给setArea
较大的返回值。它计算从地图中心到左边缘的距离。
// getRadius
let distance = middle.distance(from: edge)
let middle = CLLocation(latitude: mapView.region.center.latitude, longitude: mapView.region.center.longitude)
let edge = CLLocation(latitude: mapView.region.center.latitude, longitude: mapView.centerCoordinate.longitude - (mapView.region.span.longitudeDelta * 0.5))
let distance = middle.distance(from: edge)
如果我通过在“4000”米setArea()
,然后再把计算地图的半径(比如,内mapViewDidFinishRenderingMap()
我得到4010.61219348448
为什么不一致?
答
我更换了使用的MKCircle与以下内容:
let region = MKCoordinateRegionMakeWithDistance(center, radius * 2, radius * 2)
mapView.region = region
这是不准确的。半径== 4000馈入此在设置我的MKMapView的region
后,我得到4000.00048143541。这种差异将蔓延到用户界面,但几乎不像我的第一种方法那么快。
任何人都可以靠近吗?