2017-04-08 72 views
0

欲计算与30公里的对角线距离和区域的比例的MKCoordinateRegion应该是相同的地图帧。 我的方法是这样的:计算MKCoordinateRegion具有固定对角线距离

let alpha = atan(mapView.frame.width/mapView.frame.height).radiansToDegrees 
    let beta = 90 - alpha 

    let spanDiagonal = 30_000.0 
    let spanWidth = spanDiagonal * Double(cos(beta.degreesToRadians)) 
    let spanHeight = sqrt(spanDiagonal * spanDiagonal + spanWidth * spanWidth) 

    let region = MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, spanWidth, spanHeight) 
    let tlLat = region.center.latitude + (region.span.latitudeDelta/2.0) 
    let tlLong = region.center.longitude - (region.span.longitudeDelta/2.0) 
    let brLat = region.center.latitude - (region.span.latitudeDelta/2.0) 
    let brLong = region.center.longitude + (region.span.longitudeDelta/2.0) 

    let tl = CLLocationCoordinate2D(latitude: tlLat, longitude: tlLong) 
    let br = CLLocationCoordinate2D(latitude: brLat, longitude: brLong) 
    print(MKMetersBetweenMapPoints(MKMapPointForCoordinate(tl), MKMapPointForCoordinate(br))) 

我计算出的画面的角度,然后用这种角度的三角形和30000基地这导致了我认为正确的跨度高度和宽度。

,我的问题是对角的区域是10公里大。我认为造成这种情况的原因是米转换成度,这在某种程度上是错误的。

你看到一个问题,我的方法或你知道什么更好的方法来计算与帧的相同比例的区域,对角30公里和相同中心的地图吗?

回答

0

我结束了使用this它实现了欧几里得算法,并允许您周围扩展坐标边框真棒库。正是我在找什么!