iOS 6に固有のこの奇妙な問題に気づきました。次のコードを使用して、iPhoneマップに特定のアドレスのセットを固定しましたが、iO 4、5では正常に機能していました。スタックトレース、
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;
そして、クラッシュは解決されますが、マップは世界の別の場所を指します。これに関する専門知識を流せることを願っています