2013-03-05 36 views
1

我收到错误“终止应用程序由于未捕获的异常‘NSInvalidArgumentException’,理由是:‘无效区域’”在我的一块代码。此的是代码:在IOS的MKMapView NSInvalidArgumentException无效地区坠毁

- (MKCoordinateRegion)region 
{ 
    MKCoordinateSpan span; 
    span.latitudeDelta = (maxLat + 90) - (minLat + 90); 
    span.longitudeDelta = (maxLon + 180) - (minLon + 180); 

    NSLog(@"value of lat delta %f",span.latitudeDelta); 
    NSLog(@"value of long delta %f",span.longitudeDelta); 

    if(span.latitudeDelta == 0.0f) 
    span.latitudeDelta = 0.1f; 
    if(span.longitudeDelta == 0.0f) 
    span.longitudeDelta = 0.1f; 

    CLLocationCoordinate2D center; 
    center.latitude = minLat + span.latitudeDelta/2; 
    center.longitude = minLon + span.longitudeDelta/2; 

    return MKCoordinateRegionMake(center, span); 
} 

这里center.latitude和center.longitude正在变为零,并且它正在坠毁。 maxlat,maxlon,minlat和minlon的值为 maxLat = -91,minLat = 91,maxLon = -181,minLon = 181 请帮助我解决这个问题。

回答

1

我有类似的问题。绘制谷歌地图上的最大值(lat,long)和min(lat,long),基本上将它抛出界限。 (并且这个我估计在iOS 6的MapKit中没有得到妥善处理)

现在,我在原地修复这个问题的方法是设置这些值 maxLat = -75,minLat = 75,maxLon = -175,minLon = 175

我的应用程序可以负担得起,因为它主要绘制一些人口最密集的地区的地图。如果您的地图必须显示整个星球,包括南/北极,那么我不确定我的黑客是否会提供帮助。

0

我有同样的问题,并研究了该纬度经度和的maximimum值可以设置为: minLat = -84 maxLat = 84 闽龙 = -179 MAXLONG = 179 否则您的位置将超出地图范围,并调用setRegion可能导致崩溃。