无法在MKMapView上设置缩放级别

我将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]; 

我已经改变了三angular洲度其他数字,但没有任何改变。 我怎么能pipe理这个?

你需要设置你的跨度。 所以将您的跨度值设置为经度纬度或者纬度

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

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

另外,仪表指定了完整的宽度和高度,所以你必须使用圆的半径值的两倍。

所以它应该是:

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

您也可以将地图视图的visibleMapRect设置为圆形覆盖的boundingMapRect ,以便不必重复距离值:

 mapView.visibleMapRect = _circle.boundingMapRect; 

对于Google的缩放级别,我使用这个类别 MKMapView

否则使用安娜的解决scheme