boundingMapRect为一个圆圈

时间:2012-04-07 20:46:24

标签: objective-c mkmapview mkoverlay mkmaprect

对于MKMapView叠加层,我需要计算圆的boundingMapRect。我有它的中心坐标和半径(以米为单位) - 但不知道如何获得相应的boundingMapRect。 作为解决方法,我创建一个具有相同数据的MKCircle并使用此中的boundingMapRect。但是......至少不是那么优雅。

那么:如何计算给定半径和中心的圆的boundingMapRect?

2 个答案:

答案 0 :(得分:2)

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

然后使用此处的答案将MKCoordinateRegion转换为MKMapRect Convert MKCoordinateRegion to MKMapRect

答案 1 :(得分:0)

克雷格的回答对我有用:

- (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));
}