点击按钮,我正在缩小地图。
因此,当地图完全缩小并且我尝试再次缩小地图时,它会在设置区域时崩溃。
不确定但是,有没有办法检测地图是否已达到最大缩放限制?
这是我缩小地图的代码
-(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 span:+307.41536753,+ 450.00000000' * 在第一次投掷时调用堆栈: ( 0 CoreFoundation 0x013c8be9 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x0151d5c2 objc_exception_throw + 47 2 CoreFoundation 0x013c8b21 - [NSException raise] + 17 3 XXXapp 0x000ab237 - [MapViewController setZoomLevelForNoPicksCurrentLocationAt:] + 312
答案 0 :(得分:11)
u可以提供的最小跨度值为0.0。在运行时,span的值变为负值,从而导致崩溃。只需硬线并尝试使用nslog来监控span的值。最大跨度值高于180.0将导致崩溃。
答案 1 :(得分:4)
我刚刚将以下检查添加到增量计算,以防止应用区域崩溃:
//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;
因此区域delta纬度不能超过180,经度不能超过360。
答案 2 :(得分:0)
Swift 3.0 中的解决方案。
以下是我计算我的增量的方法:
let distanceLat = min(abs((currentLatitude! - pinLatitude) * 5), 180)
let distanceLon = min(abs((currentLongitude! - pinLongitude) * 5), 180)
* 5是随意的,随意改变它。