Как рассчитать уровень масштабирования MKMapView, чтобы соответствовать MKCircle?

Я хочу показать mkcircle при событии нажатия кнопки. Я должен рассчитать уровень масштабирования MKMapView, используя радиус круга, чтобы сделать круг заметным. Пусть радиус будет что-нибудь маленьким или большим, но mkcircle в mkmapview должен быть достаточно большим, как показано на скриншоте. код:

- (IBAction)showCircle:(id)sender {
    long radius=[self calculateRadius];
    NSLog(@"draw circle of radius=%ld",radius);
    MKCircle *circle= [[MKCircle alloc]init];
    circle = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]) radius:radius];
    [myMapView addOverlay:circle];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]), 800, 800);

    //calculate zoom level
    double radius = [circle radius] + [circle radius] / 2;
    double scale = radius / 500;
    zoomLevel=(16 - log(scale) / log(2));

    region.span.latitudeDelta  =zoomLevel;
    region.span.longitudeDelta =zoomLevel;

    [myMapView setRegion:region animated:YES];

// проблема в том, что круг выглядит очень маленьким, а внешнее пространство больше


Я хочу вывод, как показано ниже

Мы ценим любые предложения. благодарю вас!

0 ответов

Я знаю его старый пост, но отвечу любым способом.. Код в Swift 5, Xcode 11

let region = MKCoordinateRegion(circle.boundingMapRect)
mapView.setRegion(region, animated: true)

Или мы можем легко добавить маржу следующим образом

mapView.setVisibleMapRect(circle.boundingMapRect, edgePadding: UIEdgeInsets(top: 50, left: 50, bottom: 50, right: 50), animated: true)
Другие вопросы по тегам