IOS 6中的MapView区域缩放级别不同

时间:2013-01-01 19:25:10

标签: ios annotations mkmapview mkcoordinateregion

我有一个使用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上我和#39 ; m用于测试它显示不正确。 IOS 6中是否存在可能影响缩放级别的变化?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我发现在使用Xcode 4.6.1的模拟器中缩放级别得到了改进,但仍然限制在真正的iOS 6设备上。直到我将这些设备更新到iOS 6.1.3,现在缩放似乎又恢复到iOS 6级别。