2017-03-08 46 views
-1

我在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

爲什麼不一致?

回答

0

我更換了使用的MKCircle與以下內容:

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

這是不準確的。半徑== 4000饋入此在設置我的MKMapView的region後,我得到4000.00048143541。這種差異將蔓延到用戶界面,但幾乎不像我的第一種方法那麼快。

任何人都可以靠近嗎?