无法在MKMapView上设置缩放级别

or *_*ran 1 core-location mkmapview ios

我正在添加MKCircleView用户注释,如下所示:

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

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

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

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

小智 5

MKCoordinateRegionMakeWithDistance函数中的距离参数以米为单位(不是度数).

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

所以它应该是:

MKCoordinateRegion viewRegion = 
  MKCoordinateRegionMakeWithDistance
    (mapView.userLocation.coordinate, 6000, 6000);
Run Code Online (Sandbox Code Playgroud)


你也可以只设置地图视图的visibleMapRectboundingMapRect圆重叠的,所以你不必重复距离值:

mapView.visibleMapRect = _circle.boundingMapRect;
Run Code Online (Sandbox Code Playgroud)