如何设置MKMap视图的缩放级别使MKCircle(变化的半径)可见?

时间:2017-01-06 07:00:36

标签: ios objective-c iphone mapkit 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 个答案:

答案 0 :(得分:1)

您可以尝试:mapRectThatFits(:) mapRectThatFits( :edgePadding:)

可能会根据您的圆圈缩放地图:

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

希望这可以帮助你:)