将CLRegion转换为MKMapRect或类似的

我想将一个CLRegion(中心和半径)转换成两个坐标点(左上angular,右下angular)。

我已经看到了这个答案,但它是不合适的: 将MKCoordinateRegion转换为MKMapRect

我有CLRegion的原因是因为它是转发地理位置的输出。

我需要两个纬度/经度点来查询数据库(因此不能使用CLRegion containsCoordinate)。

这里是一个方法,使CLCircularRegion(类似于CLRegion)到MKMapRect之间的转换。

请记住,该方法返回的区域是一个正方形,适合CLCircularRegion,它是一个圆圈。

- (MKMapRect) rectForCLRegion:(CLCircularRegion *) cicularRegion { MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(cicularRegion.center, cicularRegion.radius*2, cicularRegion.radius*2); MKMapPoint a = MKMapPointForCoordinate(CLLocationCoordinate2DMake( region.center.latitude + region.span.latitudeDelta / 2, region.center.longitude - region.span.longitudeDelta / 2)); MKMapPoint b = MKMapPointForCoordinate(CLLocationCoordinate2DMake( region.center.latitude - region.span.latitudeDelta / 2, region.center.longitude + region.span.longitudeDelta / 2)); return MKMapRectMake(MIN(ax,bx), MIN(ay,by), ABS(ax-bx), ABS(ay-by)); } 

Swift 3的例子

 let searchRequest = MKLocalSearchRequest(completion: searchCompleter.results[indexPath.row]) let search = MKLocalSearch(request: searchRequest) search.start { [weak self] response, error in guard let region = response?.mapItems.first?.placemark.region as? CLCircularRegion else { return } let mkregion = MKCoordinateRegionMakeWithDistance(region.center, region.radius*2, region.radius*2) self?.mapView.setRegion(mkregion, animated: true) self?.searchController.isActive = false }