MKMapView オーバーレイの場合、円の boundingMapRect を計算する必要があります。私はその中心座標と半径(メートル単位)を持っていますが、対応するboundingMapRectを取得する方法がわかりません。回避策として、同じデータで MKCircle を作成し、これからboundingMapRect を使用します。しかし...少なくとも、それはエレガントではありません。
だから:与えられた半径と中心を持つ円のboundingMapRectを計算する方法は?
MKMapView オーバーレイの場合、円の boundingMapRect を計算する必要があります。私はその中心座標と半径(メートル単位)を持っていますが、対応するboundingMapRectを取得する方法がわかりません。回避策として、同じデータで MKCircle を作成し、これからboundingMapRect を使用します。しかし...少なくとも、それはエレガントではありません。
だから:与えられた半径と中心を持つ円のboundingMapRectを計算する方法は?
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, radius, radius);
次に、ここの回答を使用して、MKCoordinateRegion を MKMapRect に 変換します MKCoordinateRegion を MKMapRect に変換します
クレイグの答えは私のために働いた:
- (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));
}