2012-04-07 4 views
1

MKMapView 오버레이의 경우 원의 boundingMapRect를 계산해야합니다. 중심 좌표와 반지름 (미터)을 가지고 있습니다. 그러나 해당하는 boundingMapRect를 얻는 방법을 모릅니다. 해결 방법으로 동일한 데이터로 MKCircle을 만들고이에서 boundingMapRect를 사용합니다. 하지만 적어도 우아한 것은 아닙니다.boundingMapRect for circle

그래서 : 주어진 반지름과 중심을 가진 원에 대해 boundingMapRect를 계산하는 방법은 무엇입니까?

답변

1
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, radius, radius); 

그런 다음 MKMapRect Convert MKCoordinateRegion to MKMapRect 크레이그의 대답은 나를 위해 일한

+0

음, 첫 번째 순간에,이 내 문제를 해결했다 생각했다. 그러나 링크 된 응답의 응답에는 위에서부터 boundingMapRect가 필요한 MKOverlayView가 필요합니다. 순환 문제? – Axel

0

에 MKCoordinateRegion을 변환 여기에 답을 사용

- (MKMapRect)boundingMapRect 
{ 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(self.coordinate, self.radius, self.radius); 
    MKMapRect boundingRect = MKMapRectForCoordinateRegion(region); 
    return boundingRect; 
} 

MKMapRect MKMapRectForCoordinateRegion(MKCoordinateRegion region) 
{ 
    MKMapPoint a = MKMapPointForCoordinate(CLLocationCoordinate2DMake(
                     region.center.latitude + region.span.latitudeDelta/2, 
                     region.center.longitude - region.span.longitudeDelta/2)); 
    MKMapPoint b = MKMapPointForCoordinate(CLLocationCoordinate2DMake(
                     region.center.latitude - region.span.latitudeDelta/2, 
                     region.center.longitude + region.span.longitudeDelta/2)); 
    return MKMapRectMake(MIN(a.x,b.x), MIN(a.y,b.y), ABS(a.x-b.x), ABS(a.y-b.y)); 
}