1

我有一个使用 MapKit 来布局带有注释的地图的应用程序。我有一个创建 MKCoordinateRegion 的方法,我将它分配给 setRegion 以适当地调整地图的缩放级别。但是 IOS 6 中的缩放级别低于 IOS 5。当我在 IOS 5 上运行时,注释的间距很好,但在 IOS 6 中它们正好在边缘。如果我调高比例因子,我可以在 IOS 6 中获得正确的间距,但在 IOS 5 中,它们都被卡在了中间。

- (MKCoordinateRegion)calculateRegion
{
    MKCoordinateRegion region;

    double scaleValue = 1.5

    //set an initial value for coordinates from any annotation
    MyAnnotation *annotation = [self.annotations lastObject];
    CLLocationCoordinate2D max = annotation.coordinate;
    CLLocationCoordinate2D min = max;
    double latitude, longitude;

    for (MyAnnotation *annotation in self.annotations) {
        latitude = annotation.coordinate.latitude;
        longitude = annotation.coordinate.longitude;
        if (latitude > max.latitude) max.latitude = latitude;
        else if (latitude < min.latitude) min.latitude = latitude;
        if (longitude > max.longitude) max.longitude = longitude;
        else if (longitude < min.longitude) min.longitude = longitude;
    }

    // set the center of the mapview
    region.center.latitude = (max.latitude + min.latitude) / 2;
    region.center.longitude = (max.longitude + min.longitude) / 2;

    // set the span to be larger than the max values to add some padding around pins
    region.span.latitudeDelta = (max.latitude - min.latitude) * scaleValue;
    region.span.longitudeDelta = (max.longitude - min.longitude) * scaleValue;

    MKCoordinateRegion regionThatFits = [self.mapView regionThatFits:region];
    region = regionThatFits;

return region;
}

将 scaleFactor 设置为 2.0 以上适用于 IOS 6,1.3 适用于 IOS 5。奇怪的是 IOS 6 模拟器以与 IOS 5 中相同的方式显示注释。它只是在我用于测试的 iPhone 4S 上它显示不正确。IOS 6 中是否发生了会影响缩放级别的更改?

4

2 回答 2

0

我发现在 Xcode 4.6.1 的模拟器中缩放级别有所提高,但在真正的 iOS 6 设备上仍然受限。直到我将这些设备更新到 iOS 6.1.3,现在缩放似乎回到了每个 iOS 6 级别。

于 2013-03-25T19:25:48.763 回答
0

是的,他们更改了 iOS 6 中的最大缩放级别。我听说如果您下载 Xcode 4.6 DP1,生成的构建将使它们更接近相同(在 iOS 5 和 iOS 6 之间)。

于 2013-01-01T20:30:14.577 回答