此代码设置以 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
变量,它只会显示默认 map (整个世界)。
经过一些测试,我发现通过调整 visibleDistance
,我可以让代码正常工作。魔法距离似乎略高于 20 公里(对于一系列纬度和 latitudeDelta 值,介于 22 和 23 公里之间)。
这只发生在北纬(-80 就可以了)。
map 在初始定位后可在任何位置使用。看起来 Apple 改变了可见 map 区域的初始化方式。作为解决方法,我对受影响的区域使用了更高的缩放级别。有没有其他方法可以让它正常工作?
最佳答案
CLLocationDistance visibleDistance = 100000; // 100 kilometers
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, visibleDistance, visibleDistance);
MKCoordinateRegion adjustedRegion = [mapView regionThatFits:region];
.
.
.
[mapView setRegion:adjustedRegion animated:NO];
它会工作..
关于ios - iOS6 中的 MapView 在北纬 > 75 时不会显示某些缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568980/