刚刚遇到这个 iOS 6 特有的奇怪问题。我使用以下代码在 iPhone 地图中固定一组给定的地址,它在 iOs 4 和 5 上运行良好。但是在 iOS 6 上运行时崩溃,如下所示堆栈跟踪,
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid Region <center:+0.00000000, +0.00000000 span:+177.61462012, +900.00000000>'
我使用的代码很简单,
`CLLocationCoordinate2D topLeftCoord; topLeftCoord.latitude = -90; topLeftCoord.longitude = 180;
CLLocationCoordinate2D bottomRightCoord;
bottomRightCoord.latitude = 90;
bottomRightCoord.longitude = -180;
for (id<MKAnnotation> annotation in self.mapView.annotations) {
topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude);
topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude);
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude);
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude);
}
region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.5;
region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.5;
region = [self.mapView regionThatFits:region];
[self.mapView setRegion:region animated:YES];
`
所以问题显然在于计算 longitudeDelta 我相信因为它试图访问错误的经度 +900.000。因此,我改变了
上面的代码
region.span.latitudeDelta= self.mapView.region.span.latitudeDelta /2.0002;
region.span.longitudeDelta= self.mapView.region.span.longitudeDelta /2.0002;
崩溃得到解决,但地图指向世界上不同的位置。希望大家能对此有所了解