此代码设置默认缩放级别,该缩放级别围绕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 可以在任何位置工作。看起来苹果公司改变了可视 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/

10-13 03:49