【问题标题】:can't set zoom level on MKMapView无法在 MKMapView 上设置缩放级别
【发布时间】:2014-01-06 20:28:13
【问题描述】:

我将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 度数更改为其他数字,但没有任何改变。 我该如何管理?

【问题讨论】:

    标签: ios mkmapview core-location


    【解决方案1】:

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

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

    应该是这样的:

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


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

    mapView.visibleMapRect = _circle.boundingMapRect;
    

    【讨论】:

    • 谢谢!那是有帮助的。但是你能解释一下为什么当我将区域设置为 3000 3000 时我看不到整个圆圈吗?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      对于 Google 的缩放级别,我使用 this category 表示 MKMapView

      否则使用安娜的解决方案

      【讨论】:

        猜你喜欢
        • 2015-12-07
        • 2011-02-22
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-15
        相关资源
        最近更新 更多