此代码设置默认缩放级别,以viewDidLoad
. 该代码在早期版本的 iOS 中运行良好:
CLLocationDistance visibleDistance = 100000; // 100 kilometers
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, visibleDistance, visibleDistance);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];
.
.
.
[mapView setRegion:adjustedRegion animated:NO];
但是,在 iOS6 中,对于纬度高于 ~ 75 (>75.1) 的位置,应用程序崩溃并显示以下消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'Invalid Region <center:nan, nan span:nan, nan>'
我发现对于给定的缩放级别mapView
无法在MKCoordinateRegion
内部设置适当的。[mapView regionThatFits:region]
将所有值返回为nan
. 如果我region
直接使用该变量,它只会显示默认地图(整个世界)。
经过一些测试,我发现通过调整visibleDistance
我可以让代码正常工作。神奇距离似乎略高于 20 公里(对于一系列纬度和 latitudeDelta 值,介于 22 和 23 公里之间)。这只发生在北纬地区(-80 工作得很好)。
地图在初始定位后的任何位置都有效。看起来 Apple 改变了可见地图区域的初始化方式。我正在为受影响的区域使用更高的缩放级别作为解决方法。有没有其他方法可以让它正常工作?