ios - iOS6 中的 MapView 在北纬 > 75 时不会显示某些缩放级别

标签 ios mkmapview mapkit ios6 ios6-maps

此代码设置以 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/

相关文章:

iPhone map 套件集群精确定位

ios - didSelect 执行不等待 didDeSelect 动画结束

ios - 如何释放全局变量的内存?

ios - 自定义用户位置图像未以图钉为中心

ios - 来自 url 的 UIImage 需要很长时间才能快速加载

ios - 更改现有 MKAnnotation 上的自定义图像

ios - MKMapView 内存管理

iOS MKMapView 不在模拟器中显示 map

objective-c - 在 Objective-C 中定义全局常量

ios - 将 JWTDecode 添加到现有的 iOS 项目,找不到框架