Как установить уровень масштабирования представления MKMap, чтобы сделать видимым MKCircle(с изменяющимся радиусом)?

Мой вид карты содержит один круг, который охватывает много точек с одной центральной точкой. Когда пользователь нажимает кнопку, карта должна увеличиваться на таком уровне, чтобы круг был видим. Карта не должна быть увеличена более или менее, она должна показывать точный круг. Когда пользователь выходит из системы, у круга будет новый радиус при следующем входе в систему. Как рассчитать соответствующий уровень масштабирования. Мой код:

-(void)showCircle{

   //calculate new radius
    long radius=[self calculateRadius];
    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);
    MKCoordinateSpan span;

    //calculate zoom level
    double radius=[circle radius]);
    double rad = radius + radius / 2;

    double scale = rad / 500;
    zoomLevel=(16 - log(scale) / log(2));

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

    [myMapView setRegion:region animated:YES];
}

Заранее спасибо!

1 ответ

Решение

Вы можете попробовать: mapRectThatFits (:) или mapRectThatFits (: edgePadding:)

Может быть, что-то вроде этого, чтобы увеличить карту в соответствии с вашим кругом:

myMapView.visibleMapRect = [myMapView mapRectThatFits:circle.boundingMapRect];

Надеюсь, это поможет вам:)

Другие вопросы по тегам