无法在MKMapView上设置缩放级别

时间:2013-12-18 15:19:57

标签: ios mkmapview core-location

我将MKCircleView添加到用户注释中,如下所示:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (!_MapCentered) {
    **_circle = [MKCircle circleWithCenterCoordinate:userLocation.coordinate radius:3000];
    [_map_view addOverlay:_circle];** 
    _MapCentered = YES;
    }
}

它将触发一次,一旦用户位置被跟踪,它运行良好但是你可以看到圆形视图的直径是3000米。所以现在我希望缩放级别适合CircleView,如此:

        MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(mapView.userLocation.coordinate, 0.270, 0.270);
    [_map_view setRegion:viewRegion animated:YES];

我已将delta度数更改为其他数字,但没有任何更改。 我怎么能管理这个?

3 个答案:

答案 0 :(得分:5)

MKCoordinateRegionMakeWithDistance函数中的距离参数为(非度数)。

此外,仪表指定了整个宽度和高度,因此您必须使用圆的半径值的两倍。

所以它应该是:

MKCoordinateRegion viewRegion = 
  MKCoordinateRegionMakeWithDistance
    (mapView.userLocation.coordinate, 6000, 6000);


您也可以将地图视图的visibleMapRect设置为圆形叠加层的boundingMapRect,这样您就不必重复距离值:

mapView.visibleMapRect = _circle.boundingMapRect;

答案 1 :(得分:2)

您需要设置范围。 所以在longitudeDelta&中设置你的跨度值latitudeDelta

yourRegion.span.longitudeDelta  = 0.004; // set required zoom value 
yourRegion.span.latitudeDelta  = 0.004; // set required zoom value

答案 2 :(得分:1)

对于Google的缩放级别,我使用this category作为MKMapView

否则使用Anna的解决方案