2

MKMapView オーバーレイの場合、円の boundingMapRect を計算する必要があります。私はその中心座標と半径(メートル単位)を持っていますが、対応するboundingMapRectを取得する方法がわかりません。回避策として、同じデータで MKCircle を作成し、これからboundingMapRect を使用します。しかし...少なくとも、それはエレガントではありません。

だから:与えられた半径と中心を持つ円のboundingMapRectを計算する方法は?

4

2 に答える 2

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

次に、ここの回答を使用して、MKCoordinateRegion を MKMapRect に 変換します MKCoordinateRegion を MKMapRect に変換します

于 2012-04-08T23:40:33.200 に答える
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));
}
于 2014-04-21T07:03:08.230 に答える