MKMapView - 如何计算半径与设置一致

时间:2017-03-08 22:37:28

标签: ios 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的{​​{1}}。它计算从地图中心到左边缘的距离。

setArea

如果我传入' 4000'米到// 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) ,然后计算地图的半径(比如,setArea()我得到mapViewDidFinishRenderingMap()

为何出现差异?

1 个答案:

答案 0 :(得分:0)

我用以下内容替换了MKCircle的使用:

let region = MKCoordinateRegionMakeWithDistance(center, radius * 2, radius * 2)
mapView.region = region

这不太准确。在我设置MKMapView的region之后,在半径== 4000的情况下,我得到了4000.00048143541。这种差异将蔓延到用户界面,但不如我的第一种方法快。

有人能靠近吗?