我有一个应用程序,使用MapKit来布局带有注释的地图。我有一个创建mkcoordinaterregion的方法,我将它分配给setreregion,以适当地调整地图的缩放级别。但IOS 6的缩放级别低于IOS 5。我在ios5上运行时,注释间距很好,但在ios6中,它们就在边上。如果我把比例系数调大,我可以在ios6中得到正确的间距但在ios5中,它们都挤在了中间。
- (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中有什么变化会影响缩放级别吗?
是的,他们改变了iOS 6的最大缩放级别。我听说如果你下载Xcode 4.6 DP1,最终的构建将使它们更接近相同(在iOS 5和iOS 6之间)。
我发现Xcode 4.6.1在模拟器中的缩放级别有所提高,但在真正的iOS 6设备上仍然有限。直到我把这些设备升级到iOS 6.1.3,现在变焦似乎回到了iOS 6的水平。