剛剛感受到iOS 6特有的這個奇怪問題。 我使用以下代碼在iPhone地圖中固定給定的一組地址,它工作正常IOS 4和5。但是崩潰在iOS 6以下堆棧跟蹤運行時,iOS 6使用無效參數調用「setRegion」時地圖崩潰
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;
和碰撞吸能得到解決,但地圖點,在世界上不同的位置。希望可以擺脫這個
你的問題是減去幾個數字。在NSLog語句中添加一些中斷點並查看最後一行給你的錯誤數字。將每個元素分解爲局部變量,它也會變得更簡單。 – Jessedc
我認爲prob是regionThatFits正在調用一個0區域 –