Iphone 完全缩小MKMapView时的缩放问题

Iphone 完全缩小MKMapView时的缩放问题,iphone,mkmapview,zooming,Iphone,Mkmapview,Zooming,我正在按一下按钮缩小地图 因此,当地图完全缩小时,如果我再次尝试缩小它,则在设置区域时会崩溃 不确定,但是,有没有办法检测地图是否达到最大缩放限制 这是我缩小地图的代码 -(void)setZoomLevelForNoPicksCurrentLocationAt:(CLLocationCoordinate2D)currentCoordinate{ MKCoordinateSpan span; MKCoordinateRegion region; region.center = curren

我正在按一下按钮缩小地图

因此,当地图完全缩小时,如果我再次尝试缩小它,则在设置区域时会崩溃

不确定,但是,有没有办法检测地图是否达到最大缩放限制

这是我缩小地图的代码

-(void)setZoomLevelForNoPicksCurrentLocationAt:(CLLocationCoordinate2D)currentCoordinate{
 MKCoordinateSpan span;
 MKCoordinateRegion region;
 region.center = currentCoordinate;
 span.latitudeDelta =self.mapView.region.span.latitudeDelta *2;
 span.longitudeDelta =self.mapView.region.span.longitudeDelta *2;
 region.span = span;
 [self.mapView setRegion:region animated:YES];  
 [self.mapView regionThatFits:region];
}
任何形式的帮助都将不胜感激

请查找崩溃日志

*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无效区域中心:+38.82259098,-67.50000000范围:+307.41536753,+450.00000000” *第一次抛出时调用堆栈: ( 0 CoreFoundation 0x013c8be9例外预处理+185 1 libobjc.A.dylib 0x0151d5c2 objc_异常_抛出+47 2芯基础0x013c8b21-[N异常升高]+17 3 XXXapp 0x000ab237-[MAPVIEW控制器设置ZoomlevelForNoPickCurrentLocation:][312


u可以提供的最小跨度值为0.0。在运行时,跨度值变为负值,这会导致崩溃。只需硬连线并尝试放置nslog来监控跨度值。最大跨度值为180.0以上,这将导致崩溃。

我刚刚在增量计算中添加了以下检查,以防止应用r时崩溃区域:

//calculate deltas
double deltaLat = fabs(max_lat - min_lat) * 2;
if (deltaLat > 180) deltaLat = 180;

double deltaLong = fabs(max_long - min_long) * 2;
if (deltaLong>360) deltaLong = 360;

因此,区域三角洲纬度不能超过180,经度不能超过360。

经过几次试错测试后,在Swift 3.0中解决

以下是我计算Delta的方法:

let distanceLat = min(abs((currentLatitude! - pinLatitude) * 5), 180)
let distanceLon = min(abs((currentLongitude! - pinLongitude) * 5), 180)

*5是任意的,请随意更改。

您可以在控制台和堆栈跟踪中发布崩溃消息吗?我已经说明了崩溃的原因。地图被最大程度地缩小,现在我再次调用上述函数,该函数再次尝试缩小地图,导致崩溃。请在qu中查找崩溃日志estionAs@iamsult表示,delta超出范围。纬度delta必须在0到180之间,经度delta必须在0到360之间。在调用setRegion之前,根据需要调整delta。此外,调用RegionAtfits是没有意义的。谢谢Anna。通过谷歌获得了最大范围。因此解决了问题。但如果这是一个答案,我会我已经投票通过了……我已经试着把NSLog()放出来但是,正如你在代码中看到的,span的值增加了两倍于当前值。因此,最初它的值为0.87,然后它工作正常,直到103.00,但当我加倍到306.00时,它崩溃了。因此span的值可以肯定大于0.0。可能是你的拼写错误是最大值而不是最小值:PAlso你可以在下面添加的崩溃日志中看到span值问题..你知道跨度的最大值是多少吗?很抱歉,输入错误。跨度的最大值是180.0。你是正确的..但根据问题,你可以看到问题不是因为低于..而是因为高于180。因此,我已经解决了问题。但是如果你能在回答中添加相同的值,我可以得到r伊森选择你的答案:)这实际上是更好的答案。第一个(已接受的)选项仅部分正确!