MapKit 中的无效区域错误

Posted

技术标签:

【中文标题】MapKit 中的无效区域错误【英文标题】:Invalid region error in MapKit 【发布时间】:2014-04-11 13:12:29 【问题描述】:

我正在使用 MapKit,但在启动应用程序时不时出现以下错误。

'Invalid Region <center:nan, nan span:+180.00000000, +360.00000000>'

我用来设置区域的代码如下。

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    if (!self.initialLocation)
    
        NSLog(@"Center is %f", userLocation.coordinate.longitude); // Debug
        [self calculateLocationAddress]; // Reverse geolocating, does not create the error
        self.initialLocation = userLocation.location;

        MKCoordinateRegion region;
        region.center = userLocation.coordinate;

        // Region to show when app is loaded
        region.span = MKCoordinateSpanMake(0.04, 0.04);

        region = [mapView regionThatFits:region];
        [mapView setRegion:region animated:YES];
    

该方法中的日志显示用户位置已设置,因为我不断在其中获得正确的值,即使它因无效区域错误而崩溃。我也尝试使用CLLocationCoordinate2DIsValid 来验证该区域,但同样的错误。如上所述,此错误非常零星,时不时出现。 关于我可能做错的任何想法?

编辑: 如果我打开情节提要并在再次编译之前对其进行更改,错误几乎总是会消失。

【问题讨论】:

我所知道的是问题是纬度必须从-90到+90,所以+180.00000000,+360.00000000超出范围。 进行测试运行显示我得到有效的经度和纬度,大约 +50 和 +10。 有时(从后台到前台,同时提示位置许可等),地图视图调用此委托方法时使用零位置或无效位置。在委托方法的顶部尝试这两件事。 1) 如果 userLocation.location 为 nil,退出方法(什么也不做)。 2) 如果 CLLocationCoordinate2DIsValid(userLocation.coordinate) 为 NO,则退出该方法(什么也不做)。 感谢@Anna 的提示,但即使在重新安装后运行应用程序时也会出现错误。你提到的两件事我也试过了。 为什么中心坐标是NaN?不是一个地区需要的吗?如果你想从 span 和 center 创建一个区域,那么你应该使用 MKCoordinateRegionMake(locationCentre, locationSpan)locationCentrelocationSpan 分别是 CLLocationCoordinate2DMKCoordinateSpan。然后你在[mapView regionThatFits:theResultFromMake]中使用RegionMake的结果 【参考方案1】:

我也遇到过同样的问题,通过下面的代码解决了。

if ( (region.center.latitude >= -90) && (region.center.latitude <= 90) && (region.center.longitude >= -180) && (region.center.longitude <= 180)) 
            self.mapView.setRegion(region, animated: true)
            
            
            else
            
            print("Invalid region!")
        

快乐编码 谢谢

【讨论】:

以上是关于MapKit 中的无效区域错误的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch mapkit mkannotation 集合给出错误

iPhone Mapkit 蓝点/用户位置区域缩放问题

MapKit 的 startMonitoringForRegion 是不是保存区域的引用?

Yandex MapKit 设置标签区域设置

无效的用户位置 iPhone MapKit

Mapkit 显示注释区域