繁体   English   中英

如何计算 MKMapView 的缩放级别以适合 MKCircle?

[英]How to calculate the zoom level of MKMapView to fit MKCircle?

我想在按钮单击事件中显示 mkcircle。我必须使用圆半径计算 MKMapView 的缩放级别以使圆引人注目。让半径可以是任何大小,但 mkmapview 上的 mkcircle 应该足够大,如截图所示。我的代码:

- (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];

//问题是圆看起来很小,外面的空间更大

在此处输入图片说明
我想要像下面这样的输出

在此处输入图片说明

任何建议,将不胜感激。 谢谢你!

我知道它的旧帖子,但以任何方式回复.. 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM