我在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()
为何出现差异?
答案 0 :(得分:0)
我用以下内容替换了MKCircle的使用:
let region = MKCoordinateRegionMakeWithDistance(center, radius * 2, radius * 2)
mapView.region = region
这不太准确。在我设置MKMapView的region
之后,在半径== 4000的情况下,我得到了4000.00048143541。这种差异将蔓延到用户界面,但不如我的第一种方法快。
有人能靠近吗?